是否有一个简单的单行程序用于访问Python中嵌套字典的每个元素?

时间:2014-04-01 13:28:01

标签: python python-2.7 for-loop dictionary nested

我经常在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"

2 个答案:

答案 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()}

这将产生与您发布的代码相同的结果。虽然为了便于阅读,它在技术上是单行的,但不应该写成一行。