779 Stimmen

Was ist der Unterschied zwischen dict.items() und dict.iteritems() in Python2?

Gibt es relevante Unterschiede zwischen dict.items() y dict.iteritems() ?

De la Python-Dokumente :

dict.items() : Rückgabe a kopieren. der Liste der Paare (Schlüssel, Wert) des Wörterbuchs.

dict.iteritems() : Rückgabe eines Iterator über die Paare des Wörterbuchs (Schlüssel, Wert).

Wenn ich den folgenden Code ausführe, scheint jeder einen Verweis auf dasselbe Objekt zurückzugeben. Gibt es irgendwelche feinen Unterschiede, die ich übersehe?

#!/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

11voto

Trect Punkte 2193

dict.iteritems ist in Python3.x verschwunden, also verwenden Sie iter(dict.items()) um die gleiche Ausgabe und Speicherzuweisung zu erhalten

4voto

Hary Bakta Punkte 449

Wenn Sie eine

dict = {key1:value1, key2:value2, key3:value3,...}

Unter Python 2 , dict.items() kopiert jedes Tupel und gibt die Liste der Tupel im Wörterbuch zurück, d.h. [(key1,value1), (key2,value2), ...] . Dies hat zur Folge, dass das gesamte Wörterbuch in eine neue Liste mit Tupeln kopiert wird

dict = {i: i * 2 for i in xrange(10000000)}  
# Slow and memory hungry.
for key, value in dict.items():
    print(key,":",value)

dict.iteritems() gibt den Item-Iterator des Wörterbuchs zurück. Der Wert des zurückgegebenen Elements ist ebenfalls derselbe, d. h. (key1,value1), (key2,value2), ... aber dies ist keine Liste. Dies ist nur ein Iterator-Objekt für Wörterbucheinträge. Das bedeutet weniger Speicherverbrauch (50 % weniger).

  • Listen als veränderbare Schnappschüsse: d.items() -> list(d.items())
  • Iterator-Objekte: d.iteritems() -> iter(d.items())

Die Tupel sind identisch. Sie verglichen Tupel in jedem, so dass Sie gleich erhalten.

dict = {i: i * 2 for i in xrange(10000000)}  
# More memory efficient.
for key, value in dict.iteritems():
    print(key,":",value)

Unter Python 3 , dict.items() gibt ein Iterator-Objekt zurück. dict.iteritems() wurde entfernt, so dass es kein Problem mehr gibt.

0voto

ethplumber Punkte 1

dict.iteritems() : gibt Ihnen einen Iterator. Sie können den Iterator in anderen Mustern außerhalb der Schleife verwenden.

student = {"name": "Daniel", "student_id": 2222}

for key,value in student.items():
    print(key,value)

('student_id', 2222)
('name', 'Daniel')

for key,value in student.iteritems():
    print(key,value)

('student_id', 2222)
('name', 'Daniel')

studentIterator = student.iteritems()

print(studentIterator.next())
('student_id', 2222)

print(studentIterator.next())
('name', 'Daniel')

-6voto

user128364 Punkte 3963

Dict.iteritems() in Python 2 ist äquivalent zu dict.items() in Python 3.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X