我想知道是否说我在python中定义了两个(或者甚至更多)字典,带有一些键和相应的数据,我可以使用枚举语句访问这两个元素吗?:
for i, key1, key2 in enumerate(dict1,dict2)
... "do something"
谢谢!
答案 0 :(得分:6)
不,但你可以这样做:
for i, (key1, key2) in enumerate(zip(dict1, dict2)):
# do something
pass
但请记住:
答案 1 :(得分:2)
我不确定你想要实现的目标。如果您只想迭代枚举键,一次两次(或更多),那么您可以按Óscar's answer使用zip(dict1, dict2,...)
。或者您可以使用itertools.izip_longest()
来处理长度不同的词典。
如果您希望按顺序迭代每个字典的键和值,那么您可以像这样使用itertools.chain()
:
from itertools import chain
for i, (key, value) in enumerate(chain(dict1.items(), dict2.items(), dict3.items())):
# do something
pass
>>> dict1 = {'a': 1, 'c': 3, 'b': 2}
>>> dict2 = {'y': 25, 'x': 24, 'z': 26}
>>> dict3 = {'orange': 'orange', 'apple': 'red', 'banana': 'yellow'}
>>> for i, (key, value) in enumerate(chain(dict1.items(), dict2.items(), dict3.items())):
... print "{}: {} => {}".format(i, key, value)
...
0: a => 1
1: c => 3
2: b => 2
3: y => 25
4: x => 24
5: z => 26
6: orange => orange
7: apple => red
8: banana => yellow
答案 2 :(得分:0)
这取决于你想要枚举的方式。
假设:
>>> di1={'1':1, '2':2, '3':3}
>>> di2={'4':4,'5':5}
您可以使用itertools中的chain
将其作为一个系列文章:
>>> for i, e in enumerate(it.chain(di1.items(), di2.items())):
... print i, e
...
0 ('1', 1)
1 ('3', 3)
2 ('2', 2)
3 ('5', 5)
4 ('4', 4)
您可以使用izip_longest
成对:
>>> for i, e in enumerate(it.izip_longest(di1.items(), di2.items())):
... print i, e
...
0 (('1', 1), ('5', 5))
1 (('3', 3), ('4', 4))
2 (('2', 2), None)