2015-11-05 59 views
1
set table [dict create cells state bits state] 
set data [dict create 1 "s" 1 "f"] 

puts $table 
puts $data 

推出:Tcl的字典創建使怪異字典

細胞狀態位狀態

1個F

這是很奇怪的!爲什麼不創建一個完整的字典1 s 1 f? 謝謝!

PS文件說:

字典創建重要值...
返回包含列爲參數的鍵/值映射的每個 一個新的字典 https://www.tcl.tk/man/tcl/TclCmd/dict.htm#M6

帖子腳本(鍵和值 交替,與每個鍵的後面是它的相關聯的值。): 我發現,把任何兩個按鍵一樣做同樣的事情,如:

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

2 F

回答

2

如果您爲同一個鍵(第一個鍵= 1,第二個鍵= 2)輸入不同的值,則像Tcl dict這樣的關聯容器將僅保留其中一個值。

你仍然可以有一個具有多條等價密鑰的數據結構,只是不使用dict create,這就加強了獨特的鍵特性(這是據我所知有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 

字典處理命令將處理這個結構,就像它每個鍵只有一個一樣。 Dictionary-mutating命令不會保留原始結構的多個相等鍵。

+0

噢!當然只能有一個。出於某種原因,我期待字典像一個關鍵值對的數組(我不知道爲什麼我期望)。 –

+0

您預期由於字典的雙重表示形式爲字符串,而不強制關聯。 Tcl的優勢之一,但很難得到應用。 – Johann