2017-04-02 14 views
1

私は辞書について学んでいます。私は小さなコードを書いて構築しました。Python OrderedDict iterable over 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は2要素のイテラブル(キーと値付き)を必要とします。 – RemcoGerlich

答えて

4

hereと記載されているように、key-value対をOrderedDictに入力する必要があります。

コアの場合、OrderedDictdictionaryであり、keyに格納するにはvalueが必要です。 ので、(1)それを渡すと、間違っている:(1)タプルが、integerオブジェクトではありませんので、

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

、。

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がやっていることは、キーと値のペアに分割しようとしていることです。だからあなたはそのエラーを取得します。

関連する問題