2017-04-02 99 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正在做的是試圖將它分成鍵值對。所以你得到這個錯誤。