[dictionary] how to get key by item
Skip Montanaro
skip at pobox.com
Mon Dec 13 22:09:34 EST 2004
>> That doubles your storage, so you'll have to trade that off against
>> the speed gain of not having to loop over the entire dictionary.
Roy> Well, you *do* loop over the entire dictionary, but you only do it
Roy> once, when you create the reverse dict. If you are only going to
Roy> do a single lookup, it's no gain, but if you amortize the cost over
Roy> many lookups, it's almost certainly a big win.
Sure, but the OP said his dictionary was big. It's up to him to decide
whether the space-time tradeoff is worth it (or even possible).
Roy> BTW, does Python really build the intermediate list and throw it
Roy> away after using it to initialize the dictionary, or is it smart
Roy> enough to know that it doesn't really need to build the whole list
Roy> in memory?
That's why I called .iteritems() in my example. It won't generate the
entire list of tuples as .items() would.
Skip
More information about the Python-list
mailing list