🏠 Домашнее задание

⚡ Кратко: домашнее задание

fromkeys() создаёт словарь с одинаковым значением для набора ключей.

Если передать fromkeys() изменяемый объект, все ключи будут ссылаться на один и тот же объект.

get() безопасно возвращает значение или default вместо KeyError.

setdefault() возвращает значение ключа, а если ключа нет - добавляет его.

keys(), values() и items() возвращают динамические view objects.

Вложенные словари позволяют хранить иерархичные данные.

copy() копирует словарь поверхностно, deepcopy() копирует вложенные объекты.

Dict comprehension создаёт словарь в одну читаемую конструкцию.

Топ-3 ошибки: использовать dict.fromkeys(keys, []) для независимых списков; ожидать, что list(dictionary.keys()) будет обновляться вместе со словарём; путать shallow copy и deep copy во вложенных структурах.

Подготовка окружения

  1. Создайте папку lesson_36.
  2. Каждую задачу оформите отдельным файлом task_1.py, task_2.py и так далее.
  3. Запускайте файлы из терминала VS Code командой python task_1.py.
  4. После совпадения с примером измените входные данные и проверьте, что решение не привязано к одному случаю.

Домашнее задание 1. Реверс словаря

Поменяйте местами ключи и значения. Если значения повторяются, добавьте ключи в список.

Данные: data = {"a": 1, "b": 2, "c": 1, "d": 3}

data = {"a": 1, "b": 2, "c": 1, "d": 3}
reversed_dict = {}

for key, value in data.items():
    reversed_dict.setdefault(value, []).append(key)

print("Перевернутый словарь:", reversed_dict)

Домашнее задание 2. Счётчик букв в словах

Создайте словарь, где ключи - слова, а значения - словари с количеством каждой буквы.

Данные: words = ["anna", "bennet", "john"]

words = ["anna", "bennet", "john"]
result = {}

for word in words:
    letter_counts = {}
    for letter in word:
        letter_counts[letter] = letter_counts.get(letter, 0) + 1
    result[word] = letter_counts

print(result)

Домашнее задание 3. Распределение студентов по группам

Разделите студентов по группам на основе баллов.

Данные: students = {"Аня": 92, "Боря": 76, "Ваня": 65, "Галя": 48, "Дима": 88, "Ева": 54}

students = {"Аня": 92, "Боря": 76, "Ваня": 65, "Галя": 48, "Дима": 88, "Ева": 54}
groups = {"Отличники": {}, "Хорошисты": {}, "Троечники": {}, "Не сдали": {}}

for student, score in students.items():
    if score >= 85:
        group = "Отличники"
    elif score >= 70:
        group = "Хорошисты"
    elif score >= 50:
        group = "Троечники"
    else:
        group = "Не сдали"
    groups[group][student] = score

print("Распределение по группам:", groups)