Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the difference between dict.items() and dict.iteritems() in Python2?

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 
like image 251
the wolf Avatar asked May 05 '12 02:05

the wolf


People also ask

What is the difference between items and Iteritems in Python?

items() returns a list of tuples of the key, value pairs and d. iteritems() returns a dictionary-itemiterator.

How does Dict items work?

The dict. items() method displays the data elements occupied by a dictionary as a list of key-value pairs. The dict. items() method does not accept any parameter and returns a list containing the key-value as tuple pairs of the dictionary.

What is the use of dict () in Python?

Python dict() Function The dict() function creates a dictionary. A dictionary is a collection which is unordered, changeable and indexed.

What is the purpose of the method items () when used with a dictionary A returns a list of tuples?

The items () method in the dictionary is used to return each item in a dictionary as tuples in a list. Thus, the dictionary key and value pairs will be returned in the form of a list of tuple pairs. The items () method does not take any parameters.


2 Answers

dict.items() returns a list of 2-tuples ([(key, value), (key, value), ...]), whereas dict.iteritems() is a generator that yields 2-tuples. The former takes more space and time initially, but accessing each element is fast, whereas the second takes less space and time initially, but a bit more time in generating each element.

like image 39
Ignacio Vazquez-Abrams Avatar answered Sep 18 '22 14:09

Ignacio Vazquez-Abrams


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.

like image 97
Keith Avatar answered Sep 21 '22 14:09

Keith