Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 可以对多个对象使用枚举吗?_Python_Enumerate - Fatal编程技术网

Python 可以对多个对象使用枚举吗?

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 但请记住: 字典的元素是无序的,因此我们无

我想知道,如果我有两个(甚至更多)用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(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
中,然后稍后解压。