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

Python中是否有一个简单的一行程序来访问嵌套字典的每个元素?,python,python-2.7,for-loop,dictionary,nested,Python,Python 2.7,For Loop,Dictionary,Nested,我经常在Python2.7中使用3层或更多层的嵌套字典,并使用嵌套for循环结构来访问每个元素,如下所示。有人知道一种更简单、更整洁或更快的方法吗 for foo in mydict: for bar in mydict[foo]: for etc in mydict[foo][bar]: mydict[foo][bar][etc] = "value" 您正在使用键访问值。改用它怎么样 假设您拥有以下词典: mydict = {'a':{'aa'

我经常在Python2.7中使用3层或更多层的嵌套字典,并使用嵌套for循环结构来访问每个元素,如下所示。有人知道一种更简单、更整洁或更快的方法吗

for foo in mydict:
    for bar in mydict[foo]:
        for etc in mydict[foo][bar]:
            mydict[foo][bar][etc] = "value"

您正在使用键访问值。改用它怎么样


假设您拥有以下词典:

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

这将产生与您发布的代码相同的结果。从技术上讲,它是一行代码,即使为了可读性,它不应该写在一行中。

您不仅在访问,而且在分配。那么,您想为所有嵌套字典的所有键分配相同的值吗?我知道这是一个一般性的注释,但我使用此方法访问、分配、更新变量等。不,我不想为每个键分配相同的变量,这可以通过许多其他方法轻松完成,这只是一个简单的方法来迭代每个元素,如果有任何比我已经使用的更简单的方法,这似乎可以解决你的问题好的,干杯,这看起来很详细,我会好好阅读,看看我的简单想法能从中得到什么。mydict是什么样子的?你能发布一个例子吗?听起来很有趣,我可以尝试对它进行基准测试,看看它是否运行得更快。它通过删除连续的[]来简化每一行,我想知道是否有任何方法可以减少代码行。干杯,啊!不可理解的理解方法,应该真正开始使用它们,更可能的是,它们从来不像正常的for循环那样直观,但这可能是一个很好的方法。我经常在一个脚本中进行多次迭代,将所有内容放在一行中的能力可以使整个脚本更具可读性,即使代码片段本身不太好读。谢谢
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()}