Bunun items
yerine iteritems
Python'daki tüm yerlerde kullanamazsınız . Örneğin, aşağıdaki kod:
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)]
kullanırsanız kırılacaktır 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'
Aynı şey Python 3'te bulunan görünüm öğeleri için de geçerlidir .
Ayrıca, öğeler sözlüğün (key, value)
çiftler listesinin bir kopyasını döndürdüğü için , yine de bir kopya oluşturmak istemediğiniz sürece daha az verimlidir.
Python 2'de iteritems
yineleme için kullanmak en iyisidir . 2to3
Aracı ile değiştirebilirsiniz items
Hiç Python 3'e yükseltmek isterseniz.
iteritems
bir yineleyici olduğunu anlıyorum , bu yüzden çok kullanışlı. Neredeyse hiçbir zaman bir sözlük üzerinden liste olarak yinelemek istemiyorum. Python 2 ve 3 ile uyumlu bir şekilde jeneratör gibi sözlük üzerinde yinelemenin doğru yolu nedir?