Сортировка ассоциативных массивов в Python

Как сортировать ассоциативный массив с помощью ключа в Python?

У меня есть следующая структура:

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

Я хочу сортировать по имени. Есть ли встроенная функция для этого?

Ответ 1

Используйте параметр sorted function key:

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

Существует отличная сортировка HOWTO, которая объясняет, как это работает.


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

В качестве альтернативы вы можете использовать

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

Использование operator.itemgetter('name') немного быстрее, чем использование lambda dct: dct['name'].