【问题标题】:Python OrderedDict iterable over int [duplicate]Python OrderedDict 可迭代 int [重复]
【发布时间】:2017-04-02 08:53:01
【问题描述】:

我正在学习字典,我编写了一小段代码并构建了它。

from collections import OrderedDict

d1 = OrderedDict([('a',0),('b',9),('c',8),('d',7),('e',6)])
d2 = OrderedDict([(1),(2),(3),(4),(5)])

我收到以下错误:

d2 = OrderedDict([(1),(2),(3),(4),(5)])
TypeError: 'int' object is not iterable

我不明白为什么它不可迭代? 'int' 和这个问题有什么关系?

谢谢

【问题讨论】:

  • (1) 是整数 1。OrderedDict 需要两个元素的可迭代对象(带有键和值)。

标签: python dictionary int


【解决方案1】:

根据 here 的记录,您需要将 key-value 对提供给 OrderedDict

OrderedDict 的核心是dictionary,因此需要value 来存储key。 传递它(1)是错误的,因为:

>>a = (1)
>>type(a)
<class 'int'>

所以,(1) 不是一个元组,而是一个 integer 对象。

【讨论】:

    【解决方案2】:

    OrderedDicts(或dict 的任何子类)是一组键值对。

    >>> d1 = OrderedDict([('a',0),('b',9),('c',8),('d',7),('e',6)])
    >>> d1['b']
    9
    

    以下语句不提供任何此类对。

    d2 = OrderedDict([(1),(2),(3),(4),(5)])
    

    另请注意,
    (1)int
    (1,)tuple

    【讨论】:

      【解决方案3】:

      列表元素应该是 2 项(一个键和另一个值)的元组。

      (1) 变为 1int。所以 python 正在做的是它试图将其拆分为键值对。所以你得到了那个错误。

      【讨论】:

        猜你喜欢
        • 2013-05-09
        • 1970-01-01
        • 2014-01-25
        • 1970-01-01
        • 2013-05-18
        • 2015-09-28
        • 2015-04-14
        • 2022-07-01
        • 2021-09-05
        相关资源
        最近更新 更多