高效迭代嵌套python字典
我是python新手。我有一个嵌套字典,比如(k1,(t1,v1))。我想有效地循环每个v1值 假设我的字典就是我的字典,我想使用一个扁平化器或字典理解器,在没有两个for循环的情况下有效地访问k,x,y。请让我知道最佳做法高效迭代嵌套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
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这在你的代码中并不明显。你能更新一下吗?