我经常在Python 2.7中使用3层或更多层的嵌套字典,并使用嵌套for循环结构(如下所示)来访问每个元素。有没有人知道更简单,更整洁或更快的方法呢?
for foo in mydict:
for bar in mydict[foo]:
for etc in mydict[foo][bar]:
mydict[foo][bar][etc] = "value"
答案 0 :(得分:3)
您正在使用密钥来访问值。如何使用dict.itervalues()
呢?
for foo in mydict.itervalues():
for bar in foo.itervalues():
for etc in bar: # Iterating a dictionary yields keys
bar[etc] = "value"
答案 1 :(得分:1)
假设你有以下词典:
mydict = {'a':{'aa':{'aaa':1}}, 'b':{'bb':{'bbb':2}}, 'c':{'cc':{'ccc':3}}}
您在示例中发布的代码将产生以下结果:
{'a': {'aa': {'aaa': 'value'}}, 'c': {'cc': {'ccc': 'value'}},
'b': {'bb': {'bbb': 'value'}}}
由于您的问题还提到一个单词,您可以使用嵌套字典理解,但它不一定更快也不整洁:
mydict = {key:{inner_key:{core_key:'value'
for core_key in inner_dict.iterkeys()}
for inner_key, inner_dict in value.iteritems()}
for key, value in mydict.iteritems()}
这将产生与您发布的代码相同的结果。虽然为了便于阅读,它在技术上是单行的,但不应该写成一行。