迭代列表中所有索引的最佳方法是字典中键的值?即。
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
等。
答案 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)等。