python迭代键的列表值

python迭代键的列表值,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

迭代字典中键的值列表中的所有索引的最佳方法是什么?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, 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)
for
for
key in mydict.keys()
for
for
value in mydict[key])
。同样值得一提的是,作为一个生成器,你只能这样做一次。如果您需要重用
,那么应该使用列表理解可能是最好的选择,但是,这可以归结为嵌套for循环
((key,value)
对于mydict.keys()中的
键(
对于mydict[key]中的
值)
。同样值得一提的是,作为生成器,您只能执行一次。如果需要重用
,则应使用列表