有效地迭代嵌套的python字典

时间:2017-08-23 07:39:37

标签: python dictionary flatten dictionary-comprehension

我是python的新手。我有一个嵌套字典,如(k1,(t1,v1))。我想有效地遍历每个v1值。

所以我要说我的词典是my_dict。我想使用flattener或字典理解有效地访问k,x,y两个for循环。请让我知道最佳做法。

     for k, v in my_dict.iteritems():
         inner_dict = my_dict.get(k)
         for x, y in inner_dict.iteritems():
             print(k, x , y ) 

1 个答案:

答案 0 :(得分:3)

如果您只对值感兴趣,则无需循环项目:

flattened_values = (v for dct in my_dict.itervalues() for v in dct.itervalues())
for value in flattened_values:
    print(value)

修改

根据您的编辑,您也需要密钥。在这种情况下,除了冗余的inner_dict = my_dict.get(k)之外,您的代码就可以了,这基本上只是v。同样的单行看起来像这样:

for v in ((k1, k2, v2) for k1, v1 in my_dict.iteritems() for k2, v2 in v1.iteritems()):
    print(v)