sorted(my_dict.items(), key=lambda item: item[1])
dict(filter(lambda item: item[1] > 10, my_dict.items()))
dict(map(lambda item: (item[0], item[1] * 2), my_dict.items()))
Лямбда-функции в Python очень полезны для краткой и удобной обработки словарей, особенно когда нужно выполнить простые операции над значениями или ключами словаря, или когда нужно передать функцию как аргумент в другие функции, например, map
, filter
, sorted
.
Примеры использования:
Предположим, у вас есть словарь, где ключи - имена, а значения - баллы. Вы хотите отсортировать словарь по убыванию баллов. Лямбда-функция позволяет указать, что сортировать нужно по значению (второму элементу кортежа):
scores = {'Alice': 85, 'Bob': 92, 'Charlie': 78}
sorted_scores = dict(sorted(scores.items(), key=lambda item: item[1], reverse=True))
print(sorted_scores) # Вывод: {'Bob': 92, 'Alice': 85, 'Charlie': 78}
Допустим, вы хотите получить новый словарь, содержащий только те элементы, где значение больше 80:
scores = {'Alice': 85, 'Bob': 75, 'Charlie': 90}
filtered_scores = dict(filter(lambda item: item[1] > 80, scores.items()))
print(filtered_scores) # Вывод: {'Alice': 85, 'Charlie': 90}
Здесь лямбда-функция возвращает True
для тех элементов, значения которых больше 80, и False
в противном случае. filter
использует эту функцию для отбора элементов.
Например, нужно увеличить каждое значение в словаре на 10%:
prices = {'apple': 1.0, 'banana': 0.5, 'orange': 0.75}
updated_prices = {k: lambda x: x * 1.1(v) for k, v in prices.items()}
updated_prices = {k: v * 1.1 for k, v in prices.items()} #Более питоничный способ
print(updated_prices) # Вывод: {'apple': 1.1, 'banana': 0.55, 'orange': 0.825}
Пусть у вас есть словарь и вы хотите применить какую-то функцию ко всем значениям и создать новый словарь с теми же ключами и измененными значениями:
data = {'a': 1, 'b': 2, 'c': 3}
squared_data = dict(zip(data.keys(), map(lambda x: x**2, data.values())))
print(squared_data) # Вывод: {'a': 1, 'b': 4, 'c': 9}
Преимущества использования лямбда-функций:
Важно: Не стоит злоупотреблять лямбда-функциями для сложных операций. Если логика функции становится сложной, лучше определить обычную функцию (def
) для повышения читаемости и поддерживаемости кода.