gpt4 book ai didi

tcl - 如何在 TCL 中创建和迭代散列哈希?

转载 作者:行者123 更新时间:2023-12-03 18:28:04 24 4
gpt4 key购买 nike

如何在 TCL 中创建和迭代散列哈希?

如果我有这样的数据:

foo = {
a => {
aa => { aa1 aa2 aa3 }
ab => { ab1 ab2 ab3 }
ac => { ac1 ac2 ac3 }
}
b => {
ba => { ba1 ba2 ba3 }
bb => { bb1 bb2 bb3 }
bc => { bc1 bc2 bc3 }
}
c => {
ca => { ca1 ca2 ca3 }
cb => { cb1 cb2 cb3 }
cc => { cc1 cc2 cc3 }
}
}

如何通过一次插入一个叶节点数据项来创建这样的散列。就像是:

追加 foo(a)(ab) "ab1"

那么如何遍历所有数据元素呢?喜欢:
foreach key in foo {
foreach sub_key in foo($key) {
foreach elem in foo($key)($sub_key) {
puts "foo\($key\)\($sub_key\) is $elem"
}
}
}

编辑 :
不幸的是,我无法访问较新的“dict”构造。

最佳答案

假设您使用的是 Tcl 8.5+,则可以使用字典:

定义字典很简单:

set foo {
a {
aa { aa1 aa2 aa3 }
ab { ab1 ab2 ab3 }
ac { ac1 ac2 ac3 }
}
b {
ba { ba1 ba2 ba3 }
bb { bb1 bb2 bb3 }
bc { bc1 bc2 bc3 }
}
c {
ca { ca1 ca2 ca3 }
cb { cb1 cb2 cb3 }
cc { cc1 cc2 cc3 }
}
}

或者以编程方式定义它:
set foo [dict create]
foreach first {a b c} {
dict update foo $first subdict {
foreach second {a b c} {
foreach third {1 2 3} {
dict lappend subdict "$first$second" "$first$second$third"
}
}
}
}

并输出它:
dict for {key1 subdict} $foo {
dict for {key2 list} $subdict {
foreach elem $list {
puts "$key1\t$key2\t$elem"
}
}
}

编辑 :将数组解决方案(非字典)移至单独的答案。

关于tcl - 如何在 TCL 中创建和迭代散列哈希?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1323585/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com