我正在尝试使用以下行为获取 lsort 命令,假设我有一个变量 &
set variable {a a a a b b b b c c c c }
期望的输出是
a b c d
如果变量是
set variable { b b d d c c c c }
期望的输出是
b d c
如果变量是
set variable { z z z a a a b b }
期望的输出是
z a b
基本上我想要列表中唯一的元素,但首先重复的元素应该首先出现在输出中,最后重复的元素应该出现在最后。以上是我的案例可能出现的情况
我尝试过 lsort - unique 。但这是基于字母顺序的排序。
感谢您的帮助
PS:我的变量肯定包含重复的元素,第一次重复的元素最后不会再重复
最佳答案
字典是理想的选择(如果您希望在列表元素之间进行精确的字符串比较),因为它们是保留顺序的。
proc uniques {theList} {
set d {}
foreach item $theList {dict incr d $item}
return [dict keys $d]
}
然后我们可以这样做:
set newvariable [uniques $variable]
关于sorting - 按照以下模式获取列表的唯一元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30322900/