如何创建一个列表,从其他列表的特定索引中获取值,然后进行排序?
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 版本都支持该选项。
考虑列表 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 版本都支持该选项。