有效地迭代嵌套 python 字典
Iterate nested python dictionary efficiently
我是 python 的新手。我有一个嵌套字典,如 (k1,(t1,v1))。我想有效地遍历每个 v1 值。
所以假设我的字典是 my_dict。我想使用展平器或字典理解有效地访问 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 )
如果您只对值感兴趣,则无需遍历项目:
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)
我是 python 的新手。我有一个嵌套字典,如 (k1,(t1,v1))。我想有效地遍历每个 v1 值。
所以假设我的字典是 my_dict。我想使用展平器或字典理解有效地访问 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 )
如果您只对值感兴趣,则无需遍历项目:
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)