Python减少嵌套字典中的嵌套循环

时间:2015-10-11 18:46:08

标签: python python-3.x dictionary

我的字典结构如下所示:

mapping = {'outputs': {'cube1': {'tx': 1.0}}}

我正在迭代它们:

for node, props in mapping['outputs'].items():
    for prop, value in props.items():
        #Further loops

有没有一种优雅的方法可以将这两个嵌套循环合并为一个?

我希望得到这个结果:

for node, prop, value in nest_loop(mapping['outputs']):
    #Further loops

2 个答案:

答案 0 :(得分:3)

您可以使用生成器表达式执行类似于嵌套for循环的工作。示例 -

nest_loop = ((a,b,c) for a,x in mapping['outputs'].items() for b,c in x.items())
for node, prop, value in nest_loop:
    #Do work

但我更喜欢这个更易读的嵌套循环。

演示 -

>>> mapping = {'outputs': {'cube1': {'tx': 1.0}}}
>>> nest_loop = ((a,b,c) for a,x in mapping['outputs'].items() for b,c in x.items())
>>> for node, prop, value in nest_loop:
...     print(node,prop,value)
...
cube1 tx 1.0

答案 1 :(得分:1)

不确定这是否是您想要的:

for node, prop, value in [(node, prop, value) for node, props in mapping["outputs"].items() for prop, value in props.items()]: print node, prop, value