У реальних програмах дані часто мають складну структуру — списки всередині словників, словники всередині списків.
Список словників — найчастіший формат (як таблиця):
Кожен словник — один запис, ключі — назви стовпців.
Словник списків — групування даних:
Ключ — категорія, значення — список елементів.
Як працювати:
• Звернення ланцюжком: data[0]['name']
• Перебір: for item in list_of_dicts
• Додавання: list_of_dicts.append({'key': 'value'})
Порада: якщо структура здається складною — виведіть через print() з форматуванням.
products = [
{'name': 'Ноутбук', 'price': 50000, 'quantity': 5},
{'name': 'Мишка', 'price': 1500, 'quantity': 20},
{'name': 'Клавіатура', 'price': 3000, 'quantity': 15},
{'name': 'Монітор', 'price': 25000, 'quantity': 8}
]
for p in products:
total = p['price'] * p['quantity']
print(f"{p['name']}: {p['price']} грн. x {p['quantity']} шт. = {total} грн.")
expensive = max(products, key=lambda x: x['price'])
print(f"Найдорожчий: {expensive['name']}")
total_value = sum(p['price'] * p['quantity'] for p in products)
print(f'Загальна вартість: {total_value} грн.')
grades = {
'Іван': [85, 90, 78],
'Марія': [92, 95, 88],
'Петро': [70, 65, 80]
}
def add_grade(grades, name, grade):
grades.setdefault(name, [])
grades[name].append(grade)
def avg_grade(grades, name):
if name not in grades: return 0
return sum(grades[name]) / len(grades[name])
def best_student(grades):
return max(grades, key=lambda n: avg_grade(grades, n))
add_grade(grades, 'Анна', 95)
add_grade(grades, 'Анна', 100)
for name in grades:
print(f'{name}: середній = {avg_grade(grades, name):.1f}')
print(f'Найкращий: {best_student(grades)}')