【问题标题】:What kind of objects does enumerate returns in python?在python中枚举返回什么样的对象?
【发布时间】:2014-04-04 03:57:51
【问题描述】:

我正在阅读 python 食谱,它提到 enumerate() 返回一个迭代器,产生表单(索引,项目)的所有对(两个 -item 元组)

我可以使用 d=dict(enumerate(L)) 来制作字典。

根据我的理解,我认为 enumerate() 返回一个元组。而dict()可以把一个元组变成dict。

所以我尝试了:

dict((1,2))

TypeError 弹出。

所以我想知道 enumerate 在这里实际返回的对象是哪个 dict() 可以使它成为一个字典?

【问题讨论】:

    标签: python dictionary enumeration enumerate


    【解决方案1】:

    dict() 构造函数接受 iterable 序列的 key,value 对。

    您的 sn-p 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)) 的东西吗?
    • 此外,现在我想我知道 dict() 是如何工作的,它接受各种配对数据。像 [(1,2)] 甚至 dict 本身 {1:2}。
    • @Zen 很好,enumerate 在对序列上返回一个迭代器——这是 dict 接受的参数——这就是它起作用的原因。
    【解决方案2】:

    这是它自己的类型:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-17
      • 1970-01-01
      • 2018-10-26
      • 2011-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多