高效迭代嵌套python字典

高效迭代嵌套python字典,python,dictionary,flatten,dictionary-comprehension,Python,Dictionary,Flatten,Dictionary Comprehension,我是python新手。我有一个嵌套字典,比如(k1,(t1,v1))。我想有效地循环每个v1值 假设我的字典就是我的字典,我想使用一个扁平化器或字典理解器,在没有两个for循环的情况下有效地访问k,x,y。请让我知道最佳做法 for k, v in my_dict.iteritems(): inner_dict = my_dict.get(k) for x, y in inner_dict.iteritems(): prin

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

假设我的字典就是我的字典,我想使用一个扁平化器或字典理解器,在没有两个for循环的情况下有效地访问k,x,y。请让我知道最佳做法

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

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

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

根据您的编辑,您也需要关键点。在这种情况下,除了冗余的
internal\u dict=my\u 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)

一个for循环就可以了。什么是扁平器?您不需要
内部dict=my\u dict.get(k)
。你已经有了
v
。如果你可以迭代
v.iteritems()
,为什么要使用
internal\u dict=my\u dict.get(k)
?不确定
下一个(dct.itervalues())
是否应该被视为“最佳实践”。依我看,OP中的嵌套for版本更好,除了他们应该在两个循环中都使用
.itervalues
。@ashwini Chaudhary实际上我需要这三个信息。。键,值1,Value2@amateur这在你的代码中并不明显。你能更新一下吗?