Чи є якісь застосовні відмінності між dict.items()
та dict.iteritems()
?
dict.items()
: Повернення копії списку словників пар (ключ, значення).
dict.iteritems()
: Поверніть ітератор через пари словника (ключ, значення).
Якщо я запускаю код нижче, схоже, кожен повертає посилання на один і той же об’єкт. Чи є якісь тонкі відмінності, які мені не вистачає?
#!/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'
Вихід:
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
завжди повертається True, тому що python зберігає масив цілих об'єктів для всіх цілих чисел від -5 до 256: docs.python.org/2/c-api/int.html Коли ви створюєте int у цьому діапазоні, ви насправді просто поверніть посилання на існуючий об’єкт: >> a = 2; b = 2 >> a is b True
Але,>> a = 1234567890; b = 1234567890 >> a is b False
iteritems()
зміни iter()
в Python 3? Наведене вище посилання на документацію не відповідає цій відповіді.
items()
створює елементи відразу і повертає список.iteritems()
повертає генератор - генератор - це об'єкт, який "створює" по одному предмету за раз кожен раз, колиnext()
він викликається на нього.