有没有一种方法可以通过单个命令创建嵌套字典?

时间:2018-06-30 21:33:00

标签: tcl

set my_dict [dict create a [dict create aa AA] b B]

创建一个字典,打印如下:

==> a {aa AA} b B

这是一本嵌套字典:

dict get my_dict a aa 
==> AA

是否可以通过一种更优雅的方式来创建嵌套字典,像这样:

set my_dict [nested_dict_create {a «aa AA» b B}]

很明显,一个人可以编写这样的命令,但是任何一个lib中都有类似的东西吗?尝试天真地将字典指定为{a {aa AA} b BB}失败,因为无法从简单的字符串“ aa AA”告诉子字典。乍一看,在tcl本身中为此类事情编写解析器似乎效率低下,在语言的核心或使用C语言编写的某些库中,并使用某种语法扩展,这样的功能会更好。

2 个答案:

答案 0 :(得分:0)

只需将其创建为文字列表:

% set mydict {a {aa {AA}} b BB}
a {aa {AA}} b BB
% dict get $mydict a aa
AA

AA可以加引号或不加引号:一个单词没关系。

答案 1 :(得分:0)

如果选中dict man page,将会看到可以通过在一个命令中提供多个键来设置嵌套字典键。但是,这仅适用于单个嵌套的钥匙链。然后,您将无法继续提供其他一级密钥。 换句话说,您可以使用两个单独的命令从示例中获得结果:

dict set my_dict a aa AA
dict set my_dict b B

dict get $my_dict
> output: a {aa AA} b B
dict get $my_dict a aa
> output: AA