との間に適用可能な違いはdict.items()
ありdict.iteritems()
ますか?
Python docsから:
dict.items()
:辞書の(キー、値)ペアのリストのコピーを返します。
dict.iteritems()
:辞書の(キー、値)ペアのイテレータを返します。
以下のコードを実行すると、それぞれが同じオブジェクトへの参照を返すようです。私が見逃している微妙な違いはありますか?
#!/usr/bin/python
d={1:'one',2:'two',3:'three'}
print 'd.items():'
for k,v in d.items():
if d[k] is v: print '\tthey are the same object'
else: print '\tthey are different'
print 'd.iteritems():'
for k,v in d.iteritems():
if d[k] is v: print '\tthey are the same object'
else: print '\tthey are different'
出力:
d.items():
they are the same object
they are the same object
they are the same object
d.iteritems():
they are the same object
they are the same object
they are the same object
d[k] is v
は、pythonは-5から256までのすべての整数の整数オブジェクトの配列を保持するため、常にTrueを返します。docs.python.org/ 2 / c-api / int.htmlその範囲でintを作成すると、実際には、既存のオブジェクトへの参照を取得するだけです。 >> a = 2; b = 2 >> a is b True
ただし、>> a = 1234567890; b = 1234567890 >> a is b False
iteritems()
変更さiter()
れましたか?上記のドキュメントのリンクは、この回答と一致していないようです。
items()
一度にすべてのアイテムを作成し、リストを返します。iteritems()
ジェネレータを返します。ジェネレータは、next()
呼び出されるたびに一度に1つの項目を「作成」するオブジェクトです。