如何创建一个列表,从其他列表的特定索引中获取值,然后进行排序?

How to create a list taking values out of specific indexes of other list and then do a sort?

考虑列表 A = a b c d 和列表 B = 19 22 7 1。是否可以创建第三个列表,例如 listC = {a 19} {b 22} {c 7} {d 1} 然后根据 listB 的值对 listC 进行排序? 排序的 ListC 可以是 {d 1} {c 7} {a 19} {b 22}

合并两个列表

合并列表只是:

set listC [lmap a $listA b $listB {list $a $b}]

如果您有 8.5(或更早),则变为:

set listC {}
foreach a $listA b $listB {
    lappend listC [list $a $b]
}

但如果你有8.5或更早版本,建议你努力升级到8.6; 8.5 现在只是真正的安全支持。

对合并后的列表进行排序

lsort 命令具有针对这种情况的 -index 选项:

# Use -integer for integer sorting, of course
set sortedC [lsort -integer -index 1 $listC]

所有受支持的 Tcl 版本都支持该选项。