how to find position of dictionary values

Bruno Desthuilliers bruno.42.desthuilliers at websiteburo.invalid
Mon Sep 1 04:45:58 EDT 2008


lee a écrit :
> hi,
> i have a dictionary as follows :
> kev :  {'phno': ['dgsd', 'gsdg', 'dfsdf', 'g'], 'email': ['dg',
> 'sgsd', 'sdfsdf', 'gdf'], 'name': ['ds', 'dsg', 'dsfds', 'fgdf'],
> 'address': ['sdg', 'dsgsdg', 'sdf', 'dfg']}
> 
> if user is enters the 3rd item of key phno,
> ie "dfsdf" in my dict,
> how can i find it is the third  item in the internal list of phno of
> that dictionary?  

It's quite simple (hint : read the FineManual(tm) for dict.items() and 
list.index()), but  1/totally inefficient and 2/not garanteed to yield a 
single value (what if 'dfsdf' happens to be also the 4th item of the 
list bound to key 'address'   ?).

May I suggest you rethink your data structure instead ? What you have 
here is obviously a collection of 'phno/email/name/address'records. 
These records shouldn't be split across different objects. Assuming 
'phno' is a unique identifier for each record, a better data structure 
would be:

records =  {
    'dgsd' : {'email': 'dg', 'name' : 'ds', 'address' : 'sdg'},
    'gsdg' : {'email': 'sgsd', 'name':'ds', 'address' : 'dsgsdg'},
    # etc
}

This way, the lookup is as simple and efficient as possible.


My 2 cents....



More information about the Python-list mailing list