2012-07-07 81 views
0

我動態創建一個二維關聯數組(字典?)迭代在Python一個鍵多維關聯數組

我通過它的鍵試圖環路 - 同時保持恆定的指標之一,因此對於實例的所有關聯的值在其第一架「重點」與「約翰」:

myhash['john']['smith'] = "address 1" 
myhash['john']['doe'] = "address 2" 

我怎麼可以得到所有的哈希鍵的每個「關鍵」保持第一指數爲「約翰」 (我想要所有的姓氏)

謝謝

+0

是的,一本字典。 – 2012-07-07 19:28:40

+0

[在python字典中迭代單個維度]的可能重複(http://stackoverflow.com/questions/11378048/iterate-over-a-single-dimension-in-python-dictionary) – Marcin 2012-07-07 20:32:05

回答

4

myhash['john']本身就是一本字典。 (你是不是建立一個多維的字典,而字典的字典。)

因此...

last_names = list(myhash['john']) 

,或者如果你想要做的事在一個循環...

for last_name in myhash['john']: 
    # do something with last_name 
1
>>> for k in myhash['john']: 
...  print(k) 
... 
smith 
doe 
3

我已經mentionned它的時候answering your previous question:它看起來像你試圖重新發明方輪。考慮到你的需求,你可能會希望對lastname部分進行查詢,然後返回到步驟1(瀏覽整個數據集,按順序測試「2nd-level」鍵)或保留「lastname」存儲lastname的索引:[firstname1,firstname2,firstnameN],它減少(但不禁止)順序瀏覽,並且在插入或刪除時需要更新。如果你正在重新實現關係數據庫的大部分功能,並且你的實現不太可能比甚至更便宜的RDB更快或更強大。爲了記錄,有非常輕量級的,基於文件的(不需要服務器進程等)RDB引擎,如SQLite3(Python bindings are in the stdlib,所以你甚至不需要安裝任何特殊的東西)。