Anda tidak dapat menggunakan itemsbukannya iteritemsdi semua tempat di Python. Misalnya, kode berikut:
class C:
def __init__(self, a):
self.a = a
def __iter__(self):
return self.a.iteritems()
>>> c = C(dict(a=1, b=2, c=3))
>>> [v for v in c]
[('a', 1), ('c', 3), ('b', 2)]
akan rusak jika Anda menggunakan items:
class D:
def __init__(self, a):
self.a = a
def __iter__(self):
return self.a.items()
>>> d = D(dict(a=1, b=2, c=3))
>>> [v for v in d]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: __iter__ returned non-iterator of type 'list'
Hal yang sama berlaku untuk viewitems , yang tersedia dalam Python 3.
Juga, karena item mengembalikan salinan daftar (key, value)pasangan kamus , itu kurang efisien, kecuali jika Anda tetap ingin membuat salinan.
Dalam Python 2, yang terbaik adalah menggunakan iteritemsuntuk iterasi. The 2to3alat bisa menggantinya dengan itemsjika Anda pernah memutuskan untuk meng-upgrade ke Python 3.
iteritemsadalah iterator, oleh karena itu sangat berguna. Saya hampir tidak pernah ingin beralih ke kamus sebagai daftar. Jadi apa cara yang benar untuk beralih ke kamus dengan sesuatu seperti generator dengan cara yang kompatibel dengan Python 2 dan 3?