Решение 1. Инверсия словаря
original_dict = {"a": 1, "b": 2, "c": 3}
inverted_dict = {}
for key in original_dict:
inverted_dict[original_dict[key]] = key
print("Инверсированный словарь:", inverted_dict)
# современный вариант:
# inverted_dict = {v: k for k, v in original_dict.items()}По каждому ключу записываем в новый словарь пару значение → ключ.
Решение 2. Из чисел в слова
number_to_word = {1: "один", 2: "два", 3: "три"}
data = {"x": 1, "y": 2, "z": 3}
for key in data:
if data[key] in number_to_word:
data[key] = number_to_word[data[key]]
print(data)Если текущее значение есть в словаре перевода, заменяем его строкой.
Решение 3. Список квадратов чисел
def square_numbers(numbers):
return list(map(lambda x: x ** 2, numbers))
numbers = [1, 2, 3, 4, 5]
print(square_numbers(numbers))map применяет lambda к каждому элементу, list материализует итератор.
Решение 4. Сортировка по возрасту
def sort_by_age(people):
return sorted(people, key=lambda person: person[1])
people = [("Mike", 19), ("Nancy", 35), ("Charlie", 23), ("Oscar", 33), ("Eve", 29), ("Frank", 33), ("Bob", 20), ("Grace", 27), ("Isabella", 19), ("Jack", 24), ("Alice", 25), ("Kevin", 28), ("Laura", 31), ("Diana", 30), ("Henry", 19)]
print(sort_by_age(people))Ключом сортировки служит второй элемент кортежа.
Решение 5. Сортировка по возрасту и имени
def sort_by_age_and_name(people):
return sorted(people, key=lambda person: (-person[1], person[0]))
people = [("Mike", 19), ("Nancy", 35), ("Charlie", 23), ("Oscar", 33), ("Eve", 29), ("Frank", 33), ("Bob", 20), ("Grace", 27), ("Isabella", 19), ("Jack", 24), ("Alice", 25), ("Kevin", 28), ("Laura", 31), ("Diana", 30), ("Henry", 19)]
print(sort_by_age_and_name(people))Отрицательный возраст даёт убывание, имя сортируется по возрастанию.
Решение 6. Фильтрация и преобразование сотрудников
def process_employees(employees):
filtered = filter(lambda emp: emp["age"] > 30, employees)
updated = map(
lambda emp: {**emp, "salary": emp["salary"] * 1.2},
filtered
)
return list(updated)
employees = [
{"name": "Alice", "age": 25, "salary": 50000},
{"name": "Bob", "age": 35, "salary": 60000},
{"name": "Charlie", "age": 40, "salary": 70000},
{"name": "Diana", "age": 28, "salary": 55000},
{"name": "Eve", "age": 45, "salary": 80000}
]
print(process_employees(employees)){**emp, ...} создаёт новый словарь сотрудника и не изменяет исходный.
Решение 7. Повторения букв
from collections import Counter
text = "Programming is fun!"
letters = (char.lower() for char in text if char.isalpha())
counts = Counter(letters)
print(dict(counts))Counter подсчитывает элементы; генератор отфильтровывает только буквы и приводит к нижнему регистру.
Решение 8. Группировка студентов по классам
from collections import defaultdict
students = [("class1", "Alice"), ("class2", "Bob"), ("class1", "Charlie"), ("class3", "Daisy")]
groups = defaultdict(list)
for class_name, student in students:
groups[class_name].append(student)
print(dict(groups))defaultdict(list) автоматически создаёт пустой список для нового ключа.
Решение 9. Выбор заказов
def select_expensive_orders(orders):
selected = filter(lambda order: order["price"] > 500, orders)
names = map(lambda order: order["product"], selected)
return sorted(names)
orders = [
{"product": "Laptop", "price": 1200},
{"product": "Mouse", "price": 50},
{"product": "Keyboard", "price": 100},
{"product": "Monitor", "price": 300},
{"product": "Chair", "price": 800},
{"product": "Desk", "price": 400}
]
print(select_expensive_orders(orders))filter отбирает дорогие заказы, map достаёт названия, sorted сортирует по алфавиту.
Решение 10. Статистика продаж
def sales_revenue(sales):
revenue = {product: quantity * price for product, quantity, price in sales}
sorted_items = sorted(revenue.items(), key=lambda item: item[1], reverse=True)
return dict(sorted_items)
sales = [("Laptop", 5, 1200), ("Mouse", 50, 20), ("Keyboard", 30, 50), ("Monitor", 10, 300), ("Chair", 20, 800)]
print(sales_revenue(sales))Сначала считаем выручку, затем сортируем пары по значению в обратном порядке.