[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