[Tutor] Careful Dictionary Building

Reed O'Brien reed at reedobrien.com
Sat Dec 29 21:04:05 CET 2007


On Dec 28, 2007, at 11:29 AM, doug shawhan wrote:

> *sigh* Ignore folks. I had forgotten about .has_key().

.has_key() is deprecated in 2.6 and goes away in 3.0 IIRC

You should use

record in D

or

D.get(record)


>
> On Dec 28, 2007 11:22 AM, doug shawhan <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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/tutor/attachments/20071229/a90b3c9f/attachment-0001.htm 


More information about the Tutor mailing list