Connecting Tech Pros Worldwide Forums | Help | Site Map

Re: How to manipulate list of dictionary

Simon Brunning
Guest
 
Posts: n/a
#1: Aug 26 '08
2008/8/26 ajak_yahoo <arazak73@yahoo.com.my>:
Quote:
Need some help, I have a list of dictionary as below,
>
table = [{"Part #":"Washer","Po #":"AE00128","qty":100},
{"Part #":"Brake Pad","Po #":"AE00154","qty":150},
{"Part #":"Mesh","Po #":"AE00025","qty":320},
{"Part #":"Mouse","Po #":"AE00207","qty":120},
{"Part #":"Insulator","Po #":"AE0013","qty":190}]
>
How to manipulate the table?
>
I need to search for the Po #, and display the result as below.
>
>
Part # : Mouse
Po # : AE00207
Qty : 120 pcs
Well, that's a really bad data structure for what you want to do, but
you can do it with something like (untested):

wanted = 'AE00207'

for part in table:
if part['Po #'] == wanted:
print "Part #:\t%(Part #)s\nPo #:\t%(Po #)s\nQty #:\t%(qty)s" % part

--
Cheers,
Simon B.
simon@brunningonline.net
http://www.brunningonline.net/simon/blog/
GTalk: simon.brunning | MSN: small_values | Yahoo: smallvalues | Twitter: brunns

Bruno Desthuilliers
Guest
 
Posts: n/a
#2: Aug 26 '08

re: Re: How to manipulate list of dictionary


Simon Brunning a écrit :
Quote:
2008/8/26 ajak_yahoo <arazak73@yahoo.com.my>:
Quote:
>Need some help, I have a list of dictionary as below,
>>
>table = [{"Part #":"Washer","Po #":"AE00128","qty":100},
> {"Part #":"Brake Pad","Po #":"AE00154","qty":150},
> {"Part #":"Mesh","Po #":"AE00025","qty":320},
> {"Part #":"Mouse","Po #":"AE00207","qty":120},
> {"Part #":"Insulator","Po #":"AE0013","qty":190}]
>>
>How to manipulate the table?
>>
>I need to search for the Po #, and display the result as below.
>>
>>
>Part # : Mouse
>Po # : AE00207
>Qty : 120 pcs
>
Well, that's a really bad data structure for what you want to do, but
you can do it with something like (untested):
>
wanted = 'AE00207'
>
for part in table:
if part['Po #'] == wanted:
print "Part #:\t%(Part #)s\nPo #:\t%(Po #)s\nQty #:\t%(qty)s" % part
>
Which will not be very efficient if you happen to have lot of items in
your list and or a lot of searches to do.


The next solution is to maintain an index, ie:

def make_index(table, key):
index = {}
for record in enumerate(table):
index.setdefault(record[key], []).append(record)
return index

po_index = make_index(table, "Po #")
results = po_index.get('AE00207', None)


But this won't scale up if you have millions of records. So the next
next solution is to use a true database - either a RDBMS, or an embedded
one like SQLite.

Closed Thread