Strategy for determing difference between 2 very large dictionaries

python at bdurham.com python at bdurham.com
Wed Dec 24 03:39:56 EST 2008


Hi Marc,

> `keys()` creates a list in memory, `iterkeys()` does not. With
> ``set(dict.keys())`` there is a point in time where the dictionary, the 
> list, and the set co-exist in memory.  With ``set(dict.iterkeys())``
> only the set and the dictionary exist in memory.

Perfect explanation.

Thank you!
Malcolm


----- Original message -----
From: "Marc 'BlackJack' Rintsch" <bj_666 at gmx.net>
To: python-list at python.org
Date: 24 Dec 2008 08:30:41 GMT
Subject: Re: Strategy for determing difference between 2 very large     
       dictionaries

On Wed, 24 Dec 2008 03:23:00 -0500, python wrote:

> Hi Gabriel,
> 
> Thank you very much for your feedback!
> 
>> k1 = set(dict1.iterkeys())
> 
> I noticed you suggested .iterkeys() vs. .keys(). Is there any advantage
> to using an iterator vs. a list as the basis for creating a set? I
> understand that an iterator makes sense if you're working with a large
> set of items one at a time, but if you're creating a non-filtered
> collection, I don't see the advantage of using an iterator or a list.
> I'm sure I'm missing a subtle point here :)

`keys()` creates a list in memory, `iterkeys()` does not.  With
``set(dict.keys())`` there is a point in time where the dictionary, the 
list, and the set co-exist in memory.  With ``set(dict.iterkeys())``
only 
the set and the dictionary exist in memory.

Ciao,
	Marc 'BlackJack' Rintsch
--
http://mail.python.org/mailman/listinfo/python-list



More information about the Python-list mailing list