Kā sakārtot vārdnīcu sarakstu pēc vārdnīcas vērtības?

Man ir vārdnīcu saraksts, un es gribu, lai katrs vienums tiktu sakārtots pēc konkrētas īpašību vērtības.

Ņemiet vērā tālāk redzamo masīvu,

[{'name':'Homer', 'age':39}, {'name':'Bart', 'age':10}]

sakārtojot pēc nosaukuma, tam vajadzētu kļūt par

[{'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']))

my_list tagad būs tas, ko vēlaties.

(3 gadus vēlāk) Rediģēts, lai pievienotu:

Jaunais key arguments ir efektīvāks un glītāks. Labāka atbilde tagad izskatās šādi:

my_list = sorted(my_list, key=lambda k: k['name'])

...lambda, IMO, ir vieglāk saprotama nekā operator.itemgetter, bet YMMV.

Komentāri (0)

Es domāju, ka jūs domājāt:

[{'name':'Homer', 'age':39}, {'name':'Bart', 'age':10}]

Tas būtu sakārtots šādi:

sorted(l,cmp=lambda x,y: cmp(x['name'],y['name']))
Komentāri (0)

Jums ir jāievieš sava salīdzināšanas funkcija, kas salīdzina vārdnīcas pēc nosaukuma atslēgu vērtībām. Skatīt Sorting Mini-HOW TO no PythonInfo Wiki.

Komentāri (0)