2013-05-24 16 views
11

W jaki sposób tablica asocjacyjna może być sortowana według klucza w Python?Sortowanie tablic asocjacyjnych w języku Python

Mam następującą strukturę:

people = [ 
    {'name' : 'Bob', 'number' : '123'}, 
    {'name' : 'Bill', 'number' : '234'}, 
    {'name' : 'Dave', 'number' : '567'}, 
] 

chcę sortować według nazwy. Czy jest w tym funkcja wbudowana?

+0

Czy Google "Sortowanie tablic asocjacyjnych w python"? Co było nie tak z dokumentacją znalezioną podczas sortowania skojarzonych tablic? – djechlin

+0

Googling tytułu tego pytania ... przywraca to pytanie. – worc

Odpowiedz

7

użyć sorted funkcyjnego key parametr:

sorted(people, key=lambda dct: dct['name']) 

Jest excellent Sorting HOWTO który wyjaśnia, jak to działa.


>>> people = [ 
    {'name' : 'Bob', 'number' : '123'}, 
    {'name' : 'Bill', 'number' : '234'}, 
    {'name' : 'Dave', 'number' : '567'}, 
]  
>>> sorted(people, key=lambda dct: dct['name']) 
[{'name': 'Bill', 'number': '234'}, 
{'name': 'Bob', 'number': '123'}, 
{'name': 'Dave', 'number': '567'}] 

Alternatywnie, można użyć

import operator 
sorted(people, key=operator.itemgetter('name')) 

Korzystanie operator.itemgetter('name') jest nieco szybciej niż przy użyciu lambda dct: dct['name'].

Powiązane problemy