将键值列表分配给Tcl中的数组
我有一个列表,它是一个键值配对列表。类似于下面的内容将键值列表分配给Tcl中的数组,tcl,Tcl,我有一个列表,它是一个键值配对列表。类似于下面的内容 key1 value1 key2 value2 key3 value3 我想将其映射到数组或字典 目前,我的代码如下所示 for {set i 0} {$i < [llength $list]} {incr i} { if {[expr {fmod($i,2)}] == 0} { set key [lindex $list $i] } else { set v_array(${key}) [lindex $li
key1 value1 key2 value2 key3 value3
我想将其映射到数组或字典
目前,我的代码如下所示
for {set i 0} {$i < [llength $list]} {incr i} {
if {[expr {fmod($i,2)}] == 0} {
set key [lindex $list $i]
} else {
set v_array(${key}) [lindex $list $i]
}
}
对于{set i 0}{$i<[llength$list]}{incr i}{
如果{[expr{fmod($i,2)}]==0}{
设置键[lindex$list$i]
}否则{
设置v_数组(${key})[lindex$list$i]
}
}
在perl中,我知道这可以一次性分配到键值字典中。Tcl中有这样简单的方法吗?您可以使用
dict
命令在Tcl
中创建/操作词典
% set mydict [dict create key1 value1 key2 value2 key3 value3]
key1 value1 key2 value2 key3 value3
% dict get $mydict
key1 value1 key2 value2 key3 value3
% dict get $mydict key3
value3
% dict get $mydict key1
value1
%
即使没有dict create
命令,您也可以直接从列表中获取/访问键和值,只要它是键值形式。i、 e.偶数个元素
比如说,
% set mylist {key1 value1 key2 value2 key3 value3}
key1 value1 key2 value2 key3 value3
% dict get $mylist key2
value2
正如您所注意到的,我在这里没有使用dict create
命令,但仍然能够访问字典项
参考:您可以在一行中创建一个数组(我使用一行定义列表): 如果要检查内容,可以使用parray(Tcl 8.5及更高版本): 其他数组命令的文档可以找到,每个都有示例
如果无法避免循环,那么使用将更容易(确保列表中的元素数为偶数): (此处,
foreach
一次取两个$list
中的元素,并将它们分配给a和b)最简单的解决方案:
set mylist {key1 value1 key2 value2 key3 value3}
array set arr $mylist
就这样
现在,做一个鹦鹉学舌检查
档案:t3
#
set list [list key1 value1 key2 value2 key3 value3]
array set arr $list
parray arr
#
Execute the file: tclsh t3
arr(key1) = value1
arr(key2) = value2
arr(key3) = value3
谢谢,那看起来像是我要找的。
foreach {a b} $list {
set v_array($a) $b
}
set mylist {key1 value1 key2 value2 key3 value3}
array set arr $mylist
#
set list [list key1 value1 key2 value2 key3 value3]
array set arr $list
parray arr
#
Execute the file: tclsh t3
arr(key1) = value1
arr(key2) = value2
arr(key3) = value3