检查 Tcl 中具有多个键的数组中是否存在键
Check existence of a key in an array with multiple keys in Tcl
有没有办法检查具有多个键的数组中的键是否存在?即...
set test_arr(n1_temp,x_cell) 3
#正如你所看到的,test_arr
包含两个名为 n1_temp
和 x_cell
的键,现在我想知道是否可以检查名为 [=13= 的键是否存在]
if {[info exists test_arr(n1_temp)] } { ## not working
}
请帮忙
-问候,
希卡
As you can see that test_arr cotains two keys named n1_temp and x_cell
不,它有一个名为 n1_temp,x_cell
的键。
改用 dict
,它支持实际的多维结构:
dict set test_dict n1_temp x_cell 3
if {[dict exists $test_dict n1_temp]} {
# ...
}
您的数组有一个元素,名为 n1_temp,x_cell
,名称中有一个逗号。
您可以通过测试array names test_arr n1_temp,*
的结果列表的长度来检查名称的第一部分是否有任何带有n1_temp
的元素(这是一个全局匹配)。请注意,这实际上是一项昂贵的操作,因为它必须对数组中的所有元素进行线性扫描。
if {[llength [array names test_arr n1_temp,*]]} {
puts "There's an n1_temp,* element present"
}
有没有办法检查具有多个键的数组中的键是否存在?即...
set test_arr(n1_temp,x_cell) 3
#正如你所看到的,test_arr
包含两个名为 n1_temp
和 x_cell
的键,现在我想知道是否可以检查名为 [=13= 的键是否存在]
if {[info exists test_arr(n1_temp)] } { ## not working
}
请帮忙
-问候, 希卡
As you can see that test_arr cotains two keys named n1_temp and x_cell
不,它有一个名为 n1_temp,x_cell
的键。
改用 dict
,它支持实际的多维结构:
dict set test_dict n1_temp x_cell 3
if {[dict exists $test_dict n1_temp]} {
# ...
}
您的数组有一个元素,名为 n1_temp,x_cell
,名称中有一个逗号。
您可以通过测试array names test_arr n1_temp,*
的结果列表的长度来检查名称的第一部分是否有任何带有n1_temp
的元素(这是一个全局匹配)。请注意,这实际上是一项昂贵的操作,因为它必须对数组中的所有元素进行线性扫描。
if {[llength [array names test_arr n1_temp,*]]} {
puts "There's an n1_temp,* element present"
}