Назад к вопросам
Junior
91
questionbank
Как отсортировать список словарей по определённому полю?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Для сортировки списка словарей по определенному полю можно использовать функцию sorted() с параметром key или метод списка .sort().
Пример с sorted():
# Исходный список словарей
data = [
{'name': 'Bob', 'age': 30},
{'name': 'Alice', 'age': 25},
{'name': 'Charlie', 'age': 35}
]
# Сортировка по полю 'age'
sorted_data = sorted(data, key=lambda x: x['age'])
# print(sorted_data) # Вывод отсортированного списка
Пример с .sort():
# Исходный список словарей
data = [
{'name': 'Bob', 'age': 30},
{'name': 'Alice', 'age': 25},
{'name': 'Charlie', 'age': 35}
]
# Сортировка списка inplace по полю 'name'
data.sort(key=lambda x: x['name'])
# print(data) # Вывод отсортированного списка
Оба подхода используют анонимную функцию lambda, которая извлекает значение ключа для сортировки. Функция sorted() возвращает новый отсортированный список, а метод .sort() сортирует список на месте (inplace).
Можно использовать функцию operator.itemgetter для более лаконичной записи:
import operator
# Исходный список словарей
data = [
{'name': 'Bob', 'age': 30},
{'name': 'Alice', 'age': 25},
{'name': 'Charlie', 'age': 35}
]
# Сортировка по полю 'age' с использованием itemgetter
sorted_data = sorted(data, key=operator.itemgetter('age'))
# print(sorted_data) # Вывод отсортированного списка
Для обратной сортировки можно добавить параметр reverse=True:
import operator
# Исходный список словарей
data = [
{'name': 'Bob', 'age': 30},
{'name': 'Alice', 'age': 25},
{'name': 'Charlie', 'age': 35}
]
# Сортировка по полю 'age' в обратном порядке
sorted_data_reverse = sorted(data, key=operator.itemgetter('age'), reverse=True)
# print(sorted_data_reverse) # Вывод отсортированного списка в обратном порядке