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

在Tcl 8.0中使用keylset统计列表重复元素的出现次数

在Tcl 8.0中统计列表元素出现次数

给定目标列表:

set list {a b a c 10 10 10 d s q}

需要统计每个元素的出现次数,输出格式如下:

a  2
b  1
c  1
10 3
d  1
s  1
q  1

由于Tcl 8.0不支持dict,可以用数组来实现需求,这是Tcl 8.0原生支持的方案:

# 初始化空数组用于存储计数
array set count {}

# 遍历列表,逐个统计元素出现次数
foreach elem $list {
    if {[info exists count($elem)]} {
        incr count($elem)
    } else {
        set count($elem) 1
    }
}

# 按元素排序后输出结果,保证格式对齐
foreach elem [lsort [array names count]] {
    puts [format "%-2s %d" $elem $count($elem)]
}

代码说明:

  • array set count {}:创建一个空数组,用来记录每个元素的出现次数
  • foreach elem $list:遍历目标列表中的每一个元素
  • info exists count($elem):检查当前元素是否已经在数组中存在,存在则用incr累加计数,不存在则初始化为1
  • lsort [array names count]:对数组的键(即列表元素)进行排序,保证输出有序
  • format "%-2s %d":格式化输出,让元素和计数对齐,符合你需要的格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 23:31:01