grab dict keys/values without iterating ?!

rusi rustompmody at gmail.com
Wed Dec 11 08:31:52 EST 2013


Reordering to un-top-post.

> On 11.12.2013 06:47, Dave Angel wrote:
> > On Wed, 11 Dec 2013 02:02:20 +0200, Tamer Higazi  wrote:
> >> Is there a way to get dict by search terms without iterating the 
> > entire
> >> dictionary ?!
> >> I want to grab the dict's key and values started with 'Ar'...
> > Your wording is so ambiguous that each respondent has guessed 
> > differently.
> > I'm guessing that you want all key/value pairs for which the key 
> > begins with the two letters 'Ar' I'm guessing further that your 
> > objection to iterating the entire dictionary is not code size but 
> > performance.
> > If both assumptions are valid then I'll point out that a dict has no 
> > ordering to it. If you want an approach that doesn't iterate over the 
> > entire structure you'll need to store the data differently.  For 
> > example if you stored all the keys in a sorted list you could use bisect.



On Wednesday, December 11, 2013 3:37:08 PM UTC+5:30, Tamer Higazi wrote:
> Hi Dave!

> You were absolutely right.
> I don't want to iterate the entire dict to get me the key/values

> Let us say this dict would have 20.000 entries, but I want only those 
> with "Aa" to be grabed.
> Those starting with these 2 letters would be only 5 or 6 then it would 
> take a lot of time.

> In which way would you prefer to store the data, and which functions or 
> methods would you use effectively to accomplish this task ?


The classic data structure for this is the trie:
General idea: http://en.wikipedia.org/wiki/Trie
In python:
http://stackoverflow.com/questions/11015320/how-to-create-a-trie-in-python/


> I deeply apologize of not defining the question more defined. English is 
> not my mother tongue.
> I'll do my best next time.

English no issue.

But better not to top-post
http://en.wikipedia.org/wiki/Posting_style#Top-posting



More information about the Python-list mailing list