Tcl多层dict访问与键值关系理解 如何获取深层嵌套值
Tcl多层嵌套dict取值方案
Tcl 原生dict get命令支持传入多段键名,直接按路径访问嵌套结构,无需逐层拆包。结合列表取值命令即可拿到你要的目标值,具体操作如下:
核心取值代码
提取C对应的I、J、K值
# 按路径直接取出C下key h对应的列表 set c_h_val [dict get $a b C h] # 方式1:逐个取值 set I [lindex $c_h_val 0] set J [lindex $c_h_val 1] set K [lindex $c_h_val 2] # 方式2:一次性赋值给三个变量(更简洁) lassign $c_h_val I J K
提取L对应的O、P、Q值
set l_h_val [dict get $a b L h] lassign $l_h_val O P Q
批量遍历所有二级键的方案
如果你需要遍历b下的所有二级键(C、L等)统一处理,可以用如下写法:
# 先获取b下的所有二级键列表 set second_keys [dict keys [dict get $a b]] foreach key $second_keys { # 动态拼接键路径取值 lassign [dict get $a b $key h] val1 val2 val3 puts "键$key对应的三个值为:$val1 $val2 $val3" }
注意事项
- 取值前如果不确定键路径是否存在,可以先用
dict exists $a b C h判断,避免抛出键不存在的运行错误 - 嵌套层级没有限制,只要按顺序把各级键名依次传入
dict get即可访问任意深度的dict值
内容的提问来源于stack exchange,提问作者user3713966
相关产品推荐
相关产品推荐

