use*_*191 4 arrays sorting tcl
该INITIAL_ARRAYIS
Key -> Value
B 8
C 10
A 5
E 3
D 1
Run Code Online (Sandbox Code Playgroud)
为了获得基于密钥的排序数组,我使用
set sorted_keys_array [lsort [array names INITIAL_ARRAY]]
Run Code Online (Sandbox Code Playgroud)
得到输出
Key -> Value
A 5
B 8
C 10
D 1
E 3
Run Code Online (Sandbox Code Playgroud)
同样明智的是,如何根据键的值获得一个排序的tcl数组,如下面的输出?
Key -> Value
C 10
B 8
A 5
E 3
D 1
Run Code Online (Sandbox Code Playgroud)
kos*_*tix 10
从Tcl 8.6开始,你可以做到
lsort -stride 2 -integer [array get a]
Run Code Online (Sandbox Code Playgroud)
这将产生一个按值排序的键/值对的平面列表.
在lsort获得该-stride选项之前,您不得不求助于从平面列表array get返回中构建列表列表,然后使用以下-index选项对其进行排序lsort:
set x [list]
foreach {k v} [array get a] {
lappend x [list $k $v]
}
lsort -integer -index 1 $x
Run Code Online (Sandbox Code Playgroud)