Gibt es anwendbare Unterschiede zwischen dict.items()
und dict.iteritems()
?
Aus den Python-Dokumenten :
dict.items()
: Gibt eine Kopie der Wörterbuchliste der (Schlüssel-, Wert-) Paare zurück.
dict.iteritems()
: Gibt einen Iterator über die Paare des Wörterbuchs (Schlüssel, Wert) zurück.
Wenn ich den folgenden Code ausführe, scheint jeder einen Verweis auf dasselbe Objekt zurückzugeben. Gibt es subtile Unterschiede, die mir fehlen?
#!/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'
Ausgabe:
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
würde immer True zurückgegeben, da Python ein Array von Ganzzahlobjekten für alle Ganzzahlen zwischen -5 und 256 speichert : docs.python.org/2/c-api/int.html Wenn Sie ein Int in diesem Bereich erstellen Eigentlich nur einen Verweis auf das vorhandene Objekt >> a = 2; b = 2 >> a is b True
>> a = 1234567890; b = 1234567890 >> a is b False
iteritems()
geändert iter()
? Der obige Dokumentationslink scheint nicht mit dieser Antwort übereinzustimmen.
items()
Erstellt die Elemente auf einmal und gibt eine Liste zurück.iteritems()
Gibt einen Generator zurück - Ein Generator ist ein Objekt, das jedes Mal, wennnext()
es aufgerufen wird, jeweils ein Element "erstellt" .