Есть ли применимые различия между dict.items()
и dict.iteritems()
?
Из документов Python :
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()
к нему обращаются.