Ist es legitim, items()
statt iteritems()
an allen Orten zu verwenden? Warum wurde iteritems()
aus Python 3 entfernt? Scheint eine großartige und nützliche Methode zu sein. Was ist der Grund dafür?
Bearbeiten: Zur Verdeutlichung möchte ich wissen, was die richtige Redewendung ist, um ein Wörterbuch auf generatorähnliche Weise (jeweils ein Element, nicht alle im Speicher) auf eine Weise zu durchlaufen, die sowohl mit Python 2 als auch mit Python 3 kompatibel ist ?
quelle
iteritems
ein Iterator ist, weshalb es so nützlich ist. Ich möchte fast nie ein Wörterbuch als Liste durchlaufen. Was ist also der richtige Weg, um das Wörterbuch mit einem Generator zu iterieren, der sowohl mit Python 2 als auch mit Python 3 kompatibel ist?for key in some_dict
funktioniert auf beides - und das2to3
Werkzeug übersetzen wirditeritems()
aufitems()
jeden Fall ...for k in d: d[k]
ist unnötig ausführlich / unpythonischSo wie @Wessie, bemerkt
dict.iteritems
,dict.iterkeys
unddict.itervalues
(die eine Rückkehr Iterator in Python2.x) sowiedict.viewitems
,dict.viewkeys
unddict.viewvalues
(die Rückkehr Ansicht Objekte in Python2.x) wurden alle in Python3.x entferntUnd
dict.items
,dict.keys
unddict.values
verwendet, um eine Kopie der Wörterbuchliste in Python2.x zurückzugeben, geben jetzt Ansichtsobjekte in Python3.x zurück, aber sie sind immer noch nicht mit Iterator identisch .Wenn Sie einen Iterator in Python3.x zurückgeben möchten, verwenden Sie
iter(dictview)
:quelle
Sie können
items
stattdessen nichtiteritems
an allen Stellen in Python verwenden. Zum Beispiel der folgende Code:wird brechen, wenn Sie verwenden
items
:Gleiches gilt für Ansichtselemente , die in Python 3 verfügbar sind.
Da Elemente eine Kopie der Paarliste des Wörterbuchs zurückgeben
(key, value)
, ist dies weniger effizient, es sei denn, Sie möchten trotzdem eine Kopie erstellen.In Python 2 ist es am besten, es
iteritems
für die Iteration zu verwenden. Das2to3
Tool kann es ersetzen,items
wenn Sie sich jemals für ein Upgrade auf Python 3 entscheiden.quelle
future.utils ermöglicht die Kompatibilität von Python 2 und 3
https://python-future.org/compatible_idioms.html
quelle