如何在字典的第n级设置或追加?
How to set or lappend at nth level in dictionary?
dict set X 1 2 3 4
>> X = 1 {2 {3 4}}
- 现在经过一些计算,发现5和6应该是下两个值,需要在dict中插入
5
和6
使得X = 1 {2 {3 {4 {5 6}}}}
。如何使用本机 dict one liner 命令来做到这一点? dict set 1 2 3 4 5 6
在这种情况下没有帮助。
dict set X 1 2 3 4
dict set X a b c d
>> X = 1 {2 {3 4}} a {b {c d}}
- 在上述情况下,如何将
x
与 4
重叠,以便在使用本机单行字典命令执行 dict get $X 1 2 3
时返回 4 x
? dict lappend X 1 2 3 x
在这种情况下没有帮助。
请注意,X
应该设置为初始值,只有在初始值之后才需要使用dict one liner命令按照上述方式添加元素。
添加新的嵌套键
当你开始时
tcl8.6.8> dict set X 1 2 3 4
1 {2 {3 4}}
...您指定嵌套键 3
下的值是单个值,而不是字典本身。
如果您尝试在 3
下添加嵌套键,则 Tcl 将尝试为 3
的值创建一个字典,但它无法成功转换现有值 4
写成字典。
tcl8.6.8> dict set X 1 2 3 8 9
missing value to go with key
以上错误提示键 4
没有值。这相当于尝试 dict get 4
.
解决方案是将 4
初始化为嵌套键,并将空列表作为其值,而不仅仅是 3
下的值。一旦 4
是具有相应值的有效键,您就可以用其他值替换该值。
tcl8.6.8> unset X
tcl8.6.8> dict set X 1 2 3 4 {}
1 {2 {3 {4 {}}}}
tcl8.6.8> dict set X 1 2 3 4 5 6
1 {2 {3 {4 {5 6}}}}
附加到嵌套键
dict lappend
命令不会附加到嵌套键下的列表。当您说 dict lappend X key1 key2 val_to_append
时,您将 key2
和 val_to_append
都附加到 key1
的值。只有 dictvarname 之后的第一个参数被识别为键。其余参数都是要附加到列表的值。
要附加到嵌套键下的值,您可以使用 dict with
。
例如。
tcl8.6.8> dict set X 1 2 3 4
1 {2 {3 4}}
tcl8.6.8> dict with X 1 2 {lappend 3 x y}
4 x y
tcl8.6.8> puts $X
1 {2 {3 {4 x y}}}
dict set X 1 2 3 4
>> X = 1 {2 {3 4}}
- 现在经过一些计算,发现5和6应该是下两个值,需要在dict中插入
5
和6
使得X = 1 {2 {3 {4 {5 6}}}}
。如何使用本机 dict one liner 命令来做到这一点?dict set 1 2 3 4 5 6
在这种情况下没有帮助。
dict set X 1 2 3 4
dict set X a b c d
>> X = 1 {2 {3 4}} a {b {c d}}
- 在上述情况下,如何将
x
与4
重叠,以便在使用本机单行字典命令执行dict get $X 1 2 3
时返回4 x
?dict lappend X 1 2 3 x
在这种情况下没有帮助。
请注意,X
应该设置为初始值,只有在初始值之后才需要使用dict one liner命令按照上述方式添加元素。
添加新的嵌套键
当你开始时
tcl8.6.8> dict set X 1 2 3 4
1 {2 {3 4}}
...您指定嵌套键 3
下的值是单个值,而不是字典本身。
如果您尝试在 3
下添加嵌套键,则 Tcl 将尝试为 3
的值创建一个字典,但它无法成功转换现有值 4
写成字典。
tcl8.6.8> dict set X 1 2 3 8 9
missing value to go with key
以上错误提示键 4
没有值。这相当于尝试 dict get 4
.
解决方案是将 4
初始化为嵌套键,并将空列表作为其值,而不仅仅是 3
下的值。一旦 4
是具有相应值的有效键,您就可以用其他值替换该值。
tcl8.6.8> unset X
tcl8.6.8> dict set X 1 2 3 4 {}
1 {2 {3 {4 {}}}}
tcl8.6.8> dict set X 1 2 3 4 5 6
1 {2 {3 {4 {5 6}}}}
附加到嵌套键
dict lappend
命令不会附加到嵌套键下的列表。当您说 dict lappend X key1 key2 val_to_append
时,您将 key2
和 val_to_append
都附加到 key1
的值。只有 dictvarname 之后的第一个参数被识别为键。其余参数都是要附加到列表的值。
要附加到嵌套键下的值,您可以使用 dict with
。
例如。
tcl8.6.8> dict set X 1 2 3 4
1 {2 {3 4}}
tcl8.6.8> dict with X 1 2 {lappend 3 x y}
4 x y
tcl8.6.8> puts $X
1 {2 {3 {4 x y}}}