Python OrderedDict通过int迭代
问题描述:
我正在学习字典,并且编写了一小段代码并构建它。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'
与这个问题有什么关系?
由于
答
如记录here您需要提供key-value
对OrderedDict
。
在其核心,OrderedDict
是dictionary
,因此需要value
存储在key
。 通过它(1)是错误的,因为:
>>a = (1)
>>type(a)
<class 'int'>
因此,(1)是不是一个元组而是integer
对象。
答
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
。
答
列表元素应该是2个元素(一个键和另一个值)的元组。
(1)
变成1
和int
。所以Python正在做的是试图将它分成键值对。所以你得到这个错误。
'(1)'是整数1. OrderedDict期望两元素迭代(带有一个键和一个值)。 – RemcoGerlich