What is the difference between dict.items() and dict.iteritems() in Python 2?
dictionary, python, python-2.x
Solution
It's part of an evolution.
Originally, Python `items()` built a real list of tuples and returned that. That could potentially take a lot of extra memory.
Then, generators were introduced to the language in general, and that method was reimplemented as an iterator-generator method named `iteritems()`. The original remains for backwards compatibility.
One of Python 3’s changes is that `items()` now return views, and a `list` is never fully built. The `iteritems()` method is also gone, since `items()` in Python 3 works like `viewitems()` in Python 2.7.
Problem
Are there any applicable differences between `dict.items()` and `dict.iteritems()`? From the Python docs: `dict.items()`: Return a copy of the dictionary’s list of (key, value) pairs. `dict.iteritems()`: Return an iterator over the dictionary’s (key, value) pairs. If I run the code below, each seems to return a reference to the same object. Are there any subtle differences that I am missing? ``` #!/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' ``` Output: ``` 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 ```