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()
сортирует список "на месте".