Python中的enumerate函数返回什么类型的对象?

5
我正在阅读Python Cookbook,它提到enumerate()函数返回一个迭代器,产生形式为(index, item)的所有对(二元组)。
我可以使用d=dict(enumerate(L))将其转换为字典。
根据我的理解,我认为enumerate()返回一个元组。dict()可以将元组转换为字典。
所以我尝试了以下代码:
dict((1,2))

出现了类型错误。

所以我想知道枚举实际返回了哪个对象,使得dict()可以将其转换为字典?

2个回答

6

dict() 构造函数接受一个可迭代的 key,value 对序列。

你的代码片段 dict((1,2)) 无法工作,因为你传递了一个元组 (1,2),只有一个 key,value 对。它遍历 (1,2) 并找到整数而期望找到序列。

相反,你应该传递一个包含一个对的元组:

>>> dict(((1,2),))
{1: 2}

举个例子,比如一个列表:

>>> dict([[1,2]])
{1: 2}

enumerate() 返回一个 enumerate 对象,它是一个元组对序列的迭代器:

>>> enumerate(range(10))
<enumerate object at 0x1059b0f50>
>>> list(enumerate(range(10)))
[(0, 0), (1, 1), (2, 2), (3, 3), (4, 4), (5, 5), (6, 6), (7, 7), (8, 8), (9, 9)]

希望这能让你更加清晰地理解。

那么,我应该理解enumerate返回类似于((0,item1))的东西吗? - Zen
此外,我现在认为我知道 dict() 如何工作了,它接受各种成对数据,例如 [(1,2)] 甚至是 dict 本身 {1:2}。 - Zen
@Zen 不错,enumerate返回一个迭代器,它可以遍历一系列的键值对 - 这正是字典所接受的参数 - 所以它能够正常工作。 - alecxe

1
它是自己的类型:

>>> type(enumerate([]))
<class 'enumerate'>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接