sorted() принимает аргумент key, которому можно передать лямбда-функцию, возвращающую значение, по которому нужно сортировать.
data = [{'name': 'Alice', 'age': 30}, {'name': 'Bob', 'age': 25}, {'name': 'Charlie', 'age': 35}]
sorted_data = sorted(data, key=lambda item: item['age'])
В этом примере, lambda item: item['age'] возвращает возраст каждого словаря, который используется для сортировки.
Для сортировки списка словарей по значению с помощью лямбда-выражения в Python, используется встроенная функция sorted() или метод .sort() списка (последний изменяет исходный список). Лямбда-выражение позволяет кратко определить функцию, которая будет использоваться в качестве ключа для сортировки. Эта функция получает словарь в качестве аргумента и возвращает значение, по которому нужно сортировать.
Пример использования с sorted() (возвращает новый отсортированный список):
data = [
{'name': 'Alice', 'age': 30},
{'name': 'Bob', 'age': 25},
{'name': 'Charlie', 'age': 35}
]
# Сортировка по возрасту (ключ 'age') по возрастанию
sorted_data = sorted(data, key=lambda item: item['age'])
print(sorted_data)
# Вывод: [{'name': 'Bob', 'age': 25}, {'name': 'Alice', 'age': 30}, {'name': 'Charlie', 'age': 35}]
# Сортировка по имени (ключ 'name') по возрастанию
sorted_data_by_name = sorted(data, key=lambda item: item['name'])
print(sorted_data_by_name)
# Вывод: [{'name': 'Alice', 'age': 30}, {'name': 'Bob', 'age': 25}, {'name': 'Charlie', 'age': 35}]
Пример использования с .sort() (сортирует список на месте):
data = [
{'name': 'Alice', 'age': 30},
{'name': 'Bob', 'age': 25},
{'name': 'Charlie', 'age': 35}
]
# Сортировка по возрасту (ключ 'age') по возрастанию
data.sort(key=lambda item: item['age'])
print(data)
# Вывод: [{'name': 'Bob', 'age': 25}, {'name': 'Alice', 'age': 30}, {'name': 'Charlie', 'age': 35}]
Аргумент reverse:
Для сортировки по убыванию можно использовать аргумент reverse=True:
data = [
{'name': 'Alice', 'age': 30},
{'name': 'Bob', 'age': 25},
{'name': 'Charlie', 'age': 35}
]
# Сортировка по возрасту по убыванию
sorted_data_desc = sorted(data, key=lambda item: item['age'], reverse=True)
print(sorted_data_desc)
# Вывод: [{'name': 'Charlie', 'age': 35}, {'name': 'Alice', 'age': 30}, {'name': 'Bob', 'age': 25}]
Что важно помнить:
try-except или None в качестве значения по умолчанию).sorted() создает новый отсортированный список, не изменяя исходный. .sort() сортирует список "на месте".