python迭代键的列表值

时间:2016-11-15 18:43:33

标签: python dictionary for-loop nested-lists

迭代列表中所有索引的最佳方法是字典中键的值?即。

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

等。

3 个答案:

答案 0 :(得分:1)

使用乘法运算符*获取字符串格式所需参数号的解决方案:

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

答案 1 :(得分:0)

for k,v in mydict.items():  # `items()` for python3 `iteritems()` for python2
    for i in v:
        print(k, ":", i)

答案 2 :(得分:0)

这样的事情可以解决问题:

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]生成键值对。得到的生成器值产生(key3,1)然后(key3,8)等。