Если вам не нужен исходный list
из dictionaries
, вы можете изменить его на месте с помощью метода sort()
с использованием настраиваемой ключевой функции.
Функция ключа:
def get_name(d):
""" Return the value of a key in a dictionary. """
return d["name"]
list
для сортировки:
data_one = [{'name': 'Homer', 'age': 39}, {'name': 'Bart', 'age': 10}]
Сортировка на месте:
data_one.sort(key=get_name)
Если вам нужен исходный list
, вызовите функцию sorted()
, передав ей list
и ключевую функцию, затем назначьте возвращенный отсортированный list
новой переменной:
data_two = [{'name': 'Homer', 'age': 39}, {'name': 'Bart', 'age': 10}]
new_data = sorted(data_two, key=get_name)
Печать data_one
и new_data
.
>>> print(data_one)
[{'name': 'Bart', 'age': 10}, {'name': 'Homer', 'age': 39}]
>>> print(new_data)
[{'name': 'Bart', 'age': 10}, {'name': 'Homer', 'age': 39}]
Чтение ответа и просмотр operator.itemgetter. Могу ли я отсортировать по нескольким значениям в одном процессе (например, у нас есть
[{'name':'Bart', 'age':10, 'note':3},{'name':'Homer','age':10,'note':2},{'name':'Vasile','age':20,'note':3}]
И для использования:from operator import itemgetter newlist = sorted(old_list, key=itemgetter(-'note','name')
РЕДАКТИРОВАТЬ: Протестировано, и оно работает, но я не знаю, как записать DESC и назвать ASC.