【问题标题】:iterating one key in a python multidimensional associative array在python多维关联数组中迭代一个键
【发布时间】:2012-07-07 20:08:59
【问题描述】:
我正在动态创建一个二维关联数组(字典?)
我正在尝试遍历它的键 - 同时保持一个索引不变,例如,所有与“键”关联的值都在其第一个括号中带有 'john':
myhash['john']['smith'] = "address 1"
myhash['john']['doe'] = "address 2"
如何获取每个“键”的所有哈希键,保持第一个索引为“约翰”
(我想要所有的姓氏)
谢谢
【问题讨论】:
标签:
python
loops
dictionary
iterator
associative-array
【解决方案1】:
我在answering your previous question 时已经提到过它:看起来您正在尝试重新发明方轮。鉴于您声明的需求,您可能也希望查找姓氏部分,然后返回到第 1 步(按顺序浏览整个数据集测试“2nd-level”键)或维护“lastname”存储姓氏的索引:[firstname1, firstname2, firstnameN] 减少(但不抑制)顺序浏览,并且需要在任何插入或删除时更新。
您正在重新实现关系数据库的大部分功能,而且您的实现不太可能比更便宜的 RDB 更快或更健壮。记录一下,有一些非常轻量级、基于文件(不需要服务器进程等)的 RDB 引擎,例如 SQLite3(Python bindings are in the stdlib,因此您甚至不必安装任何特殊的东西)。
【解决方案2】:
>>> for k in myhash['john']:
... print(k)
...
smith
doe
【解决方案3】:
myhash['john'] 本身就是一个字典。 (您不是在创建一个多维字典,而是一个字典字典。)
这样……
last_names = list(myhash['john'])
或者如果你想在循环中做某事......
for last_name in myhash['john']:
# do something with last_name