嗨,我有一个带有基本键值对的数组,我想对其进行排序,然后获取键。数组内容是这样的:
arrVal {
123adf45ad ABCD.1
aldfhr435d ABCD.9
lkh45q9er4 ABCD
1234dartf4 ABCD4
}
所以基本上我的数组键是某种加密的 ID,值是字符串值。由于我无法根据数组的键对数组进行排序,因此我做了如下操作:
foreach {key in array..} {
lappend mylist [$arrVal($key)];
}
set mylist [lsort $mylist];
现在对于排序列表,我想根据这些值提取数组键。我找不到任何可以根据数组值提取数组键的命令。有什么帮助吗?
最佳答案
基本上你就快到了。您想要的是一个反向映射,它不是语言(或实际上大多数语言)中内置的东西,而是一个概念:另一个数组,其中第一个数组的值作为键,第一个数组的键作为值:
array set reverseMap {}
foreach {key val} [array get arrayVal] {
set reverseMap($val) $key
}
现在你可以像这样获取 key :
set secondKey $reverseMap([lindex $mylist 1])
关于arrays - 对 tcl 数组进行排序并获取数组键。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14143720/