You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对Tcl列表元素排序?需调整自定义排序为全字符串比较

Tcl列表排序:改为全字符串排序

我需要将如下列表:

"_7_to_0_k3"
"_7_to_0_k1"

排序为:

"_7_to_0_k1"
"_7_to_0_k3"

我之前写了一段按最后两个字符排序的Tcl自定义排序代码,但现在想改成基于整个字符串排序,该怎么调整?当前代码如下:

proc sort_by_last_two {a b} {
    set a_last_two [string range $a end-1 end]
    set b_last_two [string range $b end-1 end]
    return [string compare $a_last_two $b_last_two]
}
set sorted_list [lsort -command sort_by_last_two $my_lis]

解决方案

最简单的方式:直接使用默认排序

Tcl的lsort命令默认就是按字符串字典序排序,完全满足你的需求,不需要自定义排序命令,直接简化代码:

set sorted_list [lsort $my_lis]

保留自定义命令的方式(如需扩展)

如果后续有扩展需求必须使用自定义排序过程,只需要修改过程逻辑,直接比较整个字符串即可:

proc sort_full_string {a b} {
    return [string compare $a $b]
}
set sorted_list [lsort -command sort_full_string $my_lis]

内容的提问来源于stack exchange,提问作者flash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 00:32:43