2012-07-07 29 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,所以你甚至不需要安装任何特殊的东西)。