0

我正在动态创建一个二维关联数组(字典?)

我正在尝试遍历它的键 - 同时保持一个索引不变,例如,所有与“键”相关联的值都在其第一个括号中带有“约翰”:

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

如何获取每个“键”的所有哈希键,将第一个索引保持为“约翰”(我想要所有姓氏)

谢谢

4

3 回答 3

4

myhash['john']本身就是一本字典。(您不是在创建一个多维字典,而是一个字典字典。)

因此...

last_names = list(myhash['john'])

或者如果你想在循环中做某事......

for last_name in myhash['john']:
    # do something with last_name
于 2012-07-07T19:15:51.893 回答
3

我在回答您之前的问题时已经提到过:看起来您正在尝试重新发明方轮。鉴于您声明的需求,您可能也希望查找姓氏部分,然后返回到第 1 步(按顺序浏览整个数据集测试“2nd-level”键)或维护“lastname”索引存储 lastname:[firstname1, firstname2, firstnameN] 减少(但不抑制)顺序浏览并且需要在任何插入或删除时更新。

IOW 您正在重新实现关系数据库可以做的大部分事情,而且您的实现不太可能比更便宜的 RDB 更快或更健壮。作为记录,有非常轻量级的基于文件的(不需要服务器进程等)RDB 引擎,如 SQLite3(Python 绑定在 stdlib 中,因此您甚至不必安装任何特殊的东西)。

于 2012-07-07T20:30:43.033 回答
1
>>> for k in myhash['john']:
...     print(k)
... 
smith
doe
于 2012-07-07T19:16:06.310 回答