[Tutor] Careful Dictionary Building

Eric Brunson brunson at brunson.com
Fri Dec 28 17:43:02 CET 2007


doug shawhan wrote:
> *sigh* Ignore folks. I had forgotten about .has_key().

Actually, you don't even need that, simply write:

if record[0] in dict:
   # Do your thing.

But don't use "dict" as a variable name, it's a builtin function name.

>
>
>
> On Dec 28, 2007 11:22 AM, doug shawhan <doug.shawhan at gmail.com 
> <mailto:doug.shawhan at gmail.com>> wrote:
>
>     I'm building a dictionary from a list with ~ 1M records.
>
>     Each record in the list is itself a list.
>     Each record in the list has a line number, (index 0) which I wish
>     to use as a dictionary key.
>
>     The problem: It is possible for two different records in the list
>     to share this line number. If they do, I want to append the record
>     to the value in the dictionary.
>
>     The obvious (lazy) method of searching for doubled lines requires
>     building and parsing a key list for every record. There must be a
>     better way!
>
>     dict = {}
>     for record in list
>         if record[0] in dict.keys ():
>             dict[ record[0] ].append( record )
>         else:
>             dict[ record[0] ] = [record]
>
>     Once you get ~ 80,000 records it starts slowing down pretty badly
>     (I would too ...).
>
>     Here's hoping there is a really fast, pythonic way of doing this!
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
>   



More information about the Tutor mailing list