2017-04-02 142 views
1

我正在学习字典,并且编写了一小段代码并构建它。Python OrderedDict通过int迭代

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)'是整数1. OrderedDict期望两元素迭代(带有一个键和一个值)。 – RemcoGerlich

回答

4

如记录here您需要提供key-valueOrderedDict

在其核心,OrderedDictdictionary,因此需要value存储在key。 通过它(1)是错误的,因为:

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

因此,(1)是不是一个元组而是integer对象。

3

OrderedDict S(或任何亚类的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

1

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

(1)变成1int。所以Python正在做的是试图将它分成键值对。所以你得到这个错误。