2012-04-14 23 views
0

Sortierung möchte ich im Grunde eine sortierte Liste meiner Liste der Wörterbücher haben, die wie folgt aussieht:
Python Liste Sortierung, Wörterbücher innerhalb einer Liste

similarity = [{'Ben': 49}, {'Moose': 18}, {'Reuven': 39}, {'Cust1': 58}, {'Cust2': 10}, {'Francois': 58}, {'Jim C': 39}, {'Iren': 13}, {'Cust3': 13}] 

Jede Hilfe ist willkommen, und danke im voraus.

+2

Darf ich fragen, warum Sie eine Liste der einströmige Wörterbücher verwenden? Könnten diese in ein einziges Wörterbuch zusammengeführt werden? – senderle

+1

@senderle: Oder vielleicht könnte er nur eine Liste von Tupeln verwenden ... – rubik

Antwort

1

Dies ist eine Möglichkeit, dies zu tun.

>>> sorted(similarity, key=lambda x: x.values()[0]) 
[{'Cust2': 10}, {'Iren': 13}, {'Cust3': 13}, {'Moose': 18}, {'Reuven': 39}, {'Jim C': 39}, {'Ben': 49}, {'Cust1': 58}, {'Francois': 58}] 
4

Sie sollten hier eine Liste von Tupeln werden:

>>> lst = [d.items()[0] for d in similarity] 
>>> lst 
[('Ben', 49), ('Moose', 18), ('Reuven', 39), ('Cust1', 58), ('Cust2', 10), ('Francois', 58), ('Jim C', 39), ('Iren', 13), ('Cust3', 13)] 

Dann können Sie diese wie gewohnt sortieren.

>>> from operator import itemgetter 
>>> sorted(lst, key=itemgetter(1)) 
[('Cust2', 10), ('Iren', 13), ('Cust3', 13), ('Moose', 18), ('Reuven', 39), ('Jim C', 39), ('Ben', 49), ('Cust1', 58), ('Francois', 58)] 

Wenn Sie möchten, können Sie auch eine einzelne verwenden, ordered dictionary die Werte zu halten:

>>> from collections import OrderedDict 
>>> OrderedDict(sorted(lst, key=itemgetter(1))) 
OrderedDict([('Cust2', 10), ('Iren', 13), ('Cust3', 13), ('Moose', 18), ('Reuven', 39), ('Jim C', 39), ('Ben', 49), ('Cust1', 58), ('Francois', 58)]) 
Verwandte Themen