arrays - 对 tcl 数组进行排序并获取数组键。

标签 arrays tcl sorting

嗨,我有一个带有基本键值对的数组,我想对其进行排序,然后获取键。数组内容是这样的:

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/

相关文章:

arrays - 将手动 realWorld# 状态传递与任意 Monad 交错是否安全

regex - 如何使用正则表达式匹配字符串中的第 n 次出现

c# - 如何使用数组排序 linq 结果?

c++ - 尝试动态增长静态数组 C++

regex - 在 Tcl 中实现 "quotemeta"\Q ...\E ?

linux - Expect ,需要处理表达式并在屏幕上打印结果

ruby-on-rails - Ruby On Rails 3 问题排序查询结果

c++ - Bjarne Stroustrup 的 C++ 编程和实践第 2 版中的单参数排序

python - 如何在 Python 中实现 Schwartzian 变换?

java - 来回遍历数组