Python 可以对多个对象使用枚举吗?
我想知道,如果我有两个(甚至更多)用python定义的字典,其中包含一些键和相应的数据,我能用enumerate语句访问这两个元素吗Python 可以对多个对象使用枚举吗?,python,enumerate,Python,Enumerate,我想知道,如果我有两个(甚至更多)用python定义的字典,其中包含一些键和相应的数据,我能用enumerate语句访问这两个元素吗 for i, key1, key2 in enumerate(dict1,dict2) ... "do something" 谢谢 没有,但您可以这样做: for i, (key1, key2) in enumerate(zip(dict1, dict2)): # do something pass 但请记住: 字典的元素是无序的,因此我们无
for i, key1, key2 in enumerate(dict1,dict2)
... "do something"
谢谢 没有,但您可以这样做:
for i, (key1, key2) in enumerate(zip(dict1, dict2)):
# do something
pass
但请记住:
- 字典的元素是无序的,因此我们无法预测键的显示顺序——甚至可能在字典增长时发生变化
- 如果一个字典的元素比另一个字典多,那么它的一些键将不会在迭代中显示。如果两本词典的大小相同,那么就可以了
for i, (key1, key2) in enumerate(zip(dict1, dict2)):
# do something
pass
但请记住:
- 字典的元素是无序的,因此我们无法预测键的显示顺序——甚至可能在字典增长时发生变化
- 如果一个字典的元素比另一个字典多,那么它的一些键将不会在迭代中显示。如果两本词典的大小相同,那么就可以了
>>> di1={'1':1, '2':2, '3':3}
>>> di2={'4':4,'5':5}
您可以使用itertools中的链
,将它们作为一个系列:
>>> 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)
这取决于您希望如何枚举它 鉴于:
>>> di1={'1':1, '2':2, '3':3}
>>> di2={'4':4,'5':5}
您可以使用itertools中的链
,将它们作为一个系列:
>>> 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)
我真的不确定你想要实现什么。如果您想一次只迭代两个(或更多)枚举键,则可以根据使用
zip(dict1,dict2,…)
。或者你可以用它来处理不同长度的dict
相反,如果您希望按顺序迭代每个字典的键和值,则可以使用以下命令:
from itertools import chain
for i, (key, value) in enumerate(chain(dict1.items(), dict2.items(), dict3.items())):
# do something
pass
我真的不确定你想要实现什么。如果您想一次只迭代两个(或更多)枚举键,则可以根据使用
zip(dict1,dict2,…)
。或者你可以用它来处理不同长度的dict
相反,如果您希望按顺序迭代每个字典的键和值,则可以使用以下命令:
from itertools import chain
for i, (key, value) in enumerate(chain(dict1.items(), dict2.items(), dict3.items())):
# do something
pass
您可以
zip
将参数合并到enumerate
中,然后稍后解压。您可以zip
将参数合并到enumerate
中,然后稍后解压。