python迭代键的列表值
迭代字典中键的值列表中的所有索引的最佳方法是什么?i、 epython迭代键的列表值,python,dictionary,for-loop,nested-lists,Python,Dictionary,For Loop,Nested Lists,迭代字典中键的值列表中的所有索引的最佳方法是什么?i、 e mydict={'key1':[92,4],'key2':[1,4,3],'key3':[1,8,2],'key4':[9925,2,4]} 我想循环遍历每个键,检查列表中的所有值,然后移动到下一个键。使用iteritems我无法做到这一点有没有一种方法可以在没有嵌套forloops的情况下执行此操作 for key, value in mydict.iteritems(): print '{}: {}'.format(key, v
mydict={'key1':[92,4],'key2':[1,4,3],'key3':[1,8,2],'key4':[9925,2,4]}
我想循环遍历每个键,检查列表中的所有值,然后移动到下一个键。使用iteritems我无法做到这一点有没有一种方法可以在没有嵌套forloops的情况下执行此操作
for key, value in mydict.iteritems():
print '{}: {}'.format(key, value)'
这为我提供了以下输出:
key3: [1, 8, 2]
key2: [1, 4, 3]
key1: [92, 4]
key4: [9925, 2, 4]
我希望得到像这样的输出
key3: 1
key3: 8
key3: 2
等等像这样的东西应该可以做到:
values = ((key, value) for key in mydict.keys() for value in mydict[key])
for key, value in values:
print('{}: {}'.format(key, value))
我们在mydict.keys和mydict[key]上迭代生成键值对。生成的生成器值生成(键3,1),然后生成(键3,8),等等。类似的内容应该可以实现以下目的:
values = ((key, value) for key in mydict.keys() for value in mydict[key])
for key, value in values:
print('{}: {}'.format(key, value))
我们在mydict.keys和mydict[key]上迭代生成键值对。生成的生成器值生成(键3,1),然后生成(键3,8)等。使用乘法运算符*
获取字符串格式所需的参数编号的解决方案:
mydict = {'key1': [92,4], 'key2': [1,4,3], 'key3': [1,8,2], 'key4': [9925,2,4] }
for k, v in mydict.items():
print((k + ' : %s\n')*len(v) % tuple(v))
输出:
key3 : 1
key3 : 8
key3 : 2
key4 : 9925
key4 : 2
key4 : 4
key2 : 1
key2 : 4
key2 : 3
key1 : 92
key1 : 4
使用乘法运算符*
获取字符串格式所需的参数编号的解决方案:
mydict = {'key1': [92,4], 'key2': [1,4,3], 'key3': [1,8,2], 'key4': [9925,2,4] }
for k, v in mydict.items():
print((k + ' : %s\n')*len(v) % tuple(v))
输出:
key3 : 1
key3 : 8
key3 : 2
key4 : 9925
key4 : 2
key4 : 4
key2 : 1
key2 : 4
key2 : 3
key1 : 92
key1 : 4
我想知道的问题是,如果没有嵌套的for循环,是否有办法做到这一点。只有代码的答案没有包含解释的答案有用,因此它可以应用于一般情况。此外,OP要求的方法不是嵌套for循环。我不确定在某种程度上不嵌套for循环也能做到。我想知道的问题是,是否有一种方法可以在不嵌套for循环的情况下做到这一点。只有代码的答案不如包含解释的答案有用,因此它可以应用于一般情况。此外,OP还要求使用嵌套for循环以外的其他方法。我不确定如果不以某种方式嵌套for循环,您是否可以这样做。最终,您将无法避免某种嵌套循环。我可能会把它写成一个列表理解,但它仍然只是一个奇特的嵌套for循环,最终你将无法避免某种嵌套循环。我可能会把它写成一个列表理解,但它仍然只是一个奇特的嵌套for循环。然而,可能是最好的选择,这确实可以归结为嵌套for循环
((key,value)
forforkey in mydict.keys()
forforvalue in mydict[key])
。同样值得一提的是,作为一个生成器,你只能这样做一次。如果您需要重用值
,那么应该使用列表理解可能是最好的选择,但是,这可以归结为嵌套for循环((key,value)
对于mydict.keys()中的键(
对于mydict[key]中的值)
。同样值得一提的是,作为生成器,您只能执行一次。如果需要重用值
,则应使用列表