python - Breaking a list in to parts by subject -


i have list of dictionaries. each list can assumed have dictionaries of same format. let's call format:

dict_sample={'a':0,'b':1} 

let's a random integer, while b can 1 of few numbers (or strings, matter). i'm wanting sort of a values b. instance, if had list follows:

a    b 54   1 25   0 53   1 532  2 132  0  list=[{'a':54,'b':1},{'a':25,'b':0},{'a':53,'b':1},{'a':532,'b':2},{'a':132,'b':0}] 

i break down in 3 lists. lists include (order not important)

0 list-> [25,132] 1 list-> [54,53] 2 list-> [532] 

i know can break a's list follows, can't quite figure out elegant solution sorting a's b's. suggestions? code far looks like:

[row['a'] row in list] 

what this:

index=0      #this looped through, or chosen 1 specific value [row['a'] if row['b']==index row in list] 

if knew b values, trivial. want list each b value, each 1 has of a values in each dictionary b value. can translate directly english comprehension:

[[d['a'] d in lst if d['b']==b] b in bs] 

you don't have b values, can them doing pass:

bs = (d['b'] d in lst) 

except want unique values, , want iterate them in sorted order, so:

bs = sorted(set(d['b'] d in lst)) 

and that's there it. putting together:

>>> lst=[{'a':54,'b':1},{'a':25,'b':0},{'a':53,'b':1},{'a':532,'b':2},{'a':132,'b':0}] >>> bs = sorted(set(d['b'] d in lst)) >>> [[d['a'] d in lst if d['b']==b] b in bs] [[25, 132], [54, 53], [532]] 

Comments

Popular posts from this blog

c# - Send Image in Json : 400 Bad request -

jquery - Fancybox - apply a function to several elements -

An easy way to program an Android keyboard layout app -