Ich habe eine Liste von Wörterbüchern und möchte, dass jedes Element nach einem bestimmten Eigenschaftswert sortiert wird.
Berücksichtigen Sie das folgende Array,
[{'name':'Homer', 'age':39}, {'name':'Bart', 'age':10}]
Nach Name
sortiert, sollte es zu
[{'name':'Bart', 'age':10}, {'name':'Homer', 'age':39}]
my_list = [{'name':'Homer', 'age':39}, {'name':'Bart', 'age':10}]
my_list.sort(lambda x,y : cmp(x['name'], y['name']))
Meine_Liste" wird nun so sein, wie Sie es wünschen.
Das neue Argument "Schlüssel" ist effizienter und übersichtlicher. Eine bessere Antwort sieht jetzt so aus:
my_list = sorted(my_list, key=lambda k: k['name'])
...das Lambda ist, IMO, einfacher zu verstehen als operator.itemgetter
, aber YMMV.
Ich nehme an, Sie haben gemeint:
[{'name':'Homer', 'age':39}, {'name':'Bart', 'age':10}]
Dies würde so sortiert werden:
sorted(l,cmp=lambda x,y: cmp(x['name'],y['name']))
Sie müssen Ihre eigene Vergleichsfunktion implementieren, die die Wörterbücher nach den Werten der Namensschlüssel vergleicht. Siehe Sorting Mini-HOW TO aus PythonInfo Wiki