2017-07-30 33 views
0

嵌套鍵如果非要使用Tcl像這樣得到來自TCL字典

dict set mydict1 A key1 value1 
dict set mydict1 B key1 value1 
dict set mydict1 B key2 value2 
dict set mydict1 C key3 value3 

我想找出這個字典中的所有二級密鑰列表中選擇一個嵌套的字典。在這種情況下,我想知道第二級鍵是key1,key2,key3

有沒有辦法從這個字典直接獲取這個值列表?

回答

1

這樣做沒有內置命令,甚至代碼也不能代表您知道結構是什麼(這是Tcl中類型系統的結果)。但是,如果您知道確實總是有兩個級別的話,您自己編寫代碼並不難。

proc two-level-enumerate {dict} { 
    set keypairs {} 
    dict for {key1 subdict} $dict { 
     foreach key2 [dict keys $subdict] { 
      lappend keypairs [list $key1 $key2] 
      ### Depending on what you're doing, you might prefer: 
      # lappend keypairs $key1 $key2 
     } 
    } 
    return $keypairs 
} 

爲通用的Tcl層棘手位是知道有兩個層次,因爲它不能安全地使用內部類型上的值(類型文字是相當棘手的,而在另一面,確定預期的結構與你在它下面發生的事情也很尷尬)。明確表示 - 上面的代碼 - 效果更好。