0

私は辞書のリストを持っています。各リストには、同じ形式の辞書があると想定できます。その形式を呼び出しましょう:

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

また、これはランダムな整数であるとしましょうa。一方、b はいくつかの数値 (または文字列) のいずれかになります。aすべての値を で並べ替えたいと思っていますb。たとえば、次のようなリストがあるとします。

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}]

これを3つのリストに分けたいと思います。リストには次のものが含まれます(順序は重要ではありません)

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

次のようにリストからすべての を分割できることはわかっていますが、 を でソートするためのa洗練された解決策を完全に理解することはできません。助言がありますか?これまでの私のコードは次のようになります。ab

[row['a'] for row in list]

私が欲しいのは次のようなものです:

index=0      #This could be looped through, or just chosen for one specific value
[row['a'] if row['b']==index for row in list]
4

4 に答える 4

3
from collections import defaultdict

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

output = defaultdict(list)

for d in data:
    output[d['b']].append(d['a'])

output = sorted((k, v) for k, v in output.items())

print output

出力:

[(0, [25, 132]), (1, [54, 53]), (2, [532])]
于 2013-08-15T22:42:26.327 に答える
0
mylist=[{'a':54,'b':1},{'a':25,'b':0},{'a':53,'b':1},{'a':532,'b':2},{'a':132,'b':0}]

>>> zerolist, onelist, twolist = [], [], []
>>> for x in mylist:

        if 0 in x.values():
            zerolist.append(x['a'])
        elif 1 in x.values():
                onelist.append(x['a'])
        elif 2 in x.values():
                onelist.append(x['a'])
>>> >>> zerolist
[25, 132]
于 2013-08-15T22:42:32.320 に答える