将列表分配给Tcl中的键控词典

将列表分配给Tcl中的键控词典,tcl,Tcl,我在Tcl中有一个传入列表,它实际上是键控列表的值 像这样的 set list1 [list value1 value2 value3 value4 value5 value6 value7 value8 value9] set keys [list key1 key2 key3] 我想通过Tcl中键列表中的键将list1分配到一个键数组中 这是最好的方法吗?还是有更优雅的方法 foreach {a b c} $list1 { dict lappend mydict key1 $

我在Tcl中有一个传入列表,它实际上是键控列表的值

像这样的

set list1 [list value1 value2 value3 value4 value5 value6 value7 value8 value9]
set keys [list key1 key2 key3]
我想通过Tcl中键列表中的键将list1分配到一个键数组中

这是最好的方法吗?还是有更优雅的方法

 foreach {a b c} $list1 {
      dict lappend mydict key1 $a
      dict lappend mydict key2 $b
      dict lappend mydict key3 $c
 }

好吧,我更想做:

foreach {a b c} $list1 {
    foreach k $keys v [list $a $b $c] {
        dict lappend mydict $k $v
    }
}
或者在使用更简单的double
foreach
之前,将键列表扩展到传入列表的长度:

foreach k [lrepeat [expr {[llength $list1]/[llength $keys]}] {*}$keys] v $list1 {
    dict lappend mydict $k $v
}

我不完全确定这些是否比您现在正在做的更加优雅(或健壮)。

谢谢。您确定第二个代码段中没有输入错误吗?lrepeat命令中的$keys不是$list1吗?@Jonjilla Err,是的。固定的。(上班前没有时间运行代码,所以一个bug悄悄地进来了…)