Tcl dict create制作了奇怪的字典

时间:2015-11-05 16:04:15

标签: dictionary tcl

set table [dict create cells state bits state]
set data [dict create 1 "s" 1 "f"]

puts $table
puts $data

推出:

  

单元状态位状态

     

1 f

这很奇怪!为什么不在1 s 1 f创建一个完整的字典? 谢谢!

ps文档说:

  

dict create 键值...
  返回包含每个字典的新字典   作为参数列出的键/值映射(键和值   交替,每个键后跟其相关值。)   https://www.tcl.tk/man/tcl/TclCmd/dict.htm#M6

邮寄后的脚本: 我发现把任何两个相同的键都放在同一个东西上,例如:

puts [dict create 2 "s" 2 "f"]
  

2 f

1 个答案:

答案 0 :(得分:2)

如果为同一个键输入不同的值(第一种情况下key = 1,第二种情况下key = 2),像Tcl dict这样的关联容器将只保留其中一个值。

您仍然可以拥有一个具有多个相等键的数据结构,只是不要使用dict create,这会强制使用唯一键特征(AFAIK是使用dict create初始化字典的唯一原因) :

% set data {1 s 1 f}
1 s 1 f
% dict get $data 1
f
% set data [dict create 1 s 1 f]
1 f
% dict get $data 1
f

字典处理命令将处理此结构,就好像它只有一个键一样。字典变异命令不会保留原始结构的多个相等键。