Текст задания из LMS / источника
Реверс словаря
Поменяйте местами ключи и значения. Если значения повторяются, добавьте ключи в список.
data = {"a": 1, "b": 2, "c": 1, "d": 3}Пример вывода: {1: ['a', 'c'], 2: ['b'], 3: ['d']}
Счётчик букв в словах
Создайте словарь, где ключи - слова, а значения - словари с подсчётом каждой буквы.
words = ["anna", "bennet", "john"]Пример вывода: {'anna': {'a': 2, 'n': 2}, ...}
Распределение студентов по группам
Распределите студентов по группам Отличники, Хорошисты, Троечники, Не сдали.
students = {"Аня": 92, "Боря": 76, "Ваня": 65, "Галя": 48, "Дима": 88, "Ева": 54}Пример вывода: словарь групп со студентами
Пошаговое решение
Реверс словаря
def reverse_dictionary(data):
result = {}
for key, value in data.items():
result.setdefault(value, []).append(key)
return result
print(reverse_dictionary({"a": 1, "b": 2, "c": 1, "d": 3}))setdefault() создаёт список только при первом появлении значения.
Счётчик букв
def count_letters(words):
result = {}
for word in words:
result[word] = {}
for char in word:
result[word][char] = result[word].get(char, 0) + 1
return result
print(count_letters(["anna", "bennet", "john"]))Вложенный словарь хранит частоты внутри каждого слова отдельно.
Группы студентов
def distribute_students(students):
groups = {"Отличники": {}, "Хорошисты": {}, "Троечники": {}, "Не сдали": {}}
for name, score in students.items():
if score >= 85:
groups["Отличники"][name] = score
elif score >= 70:
groups["Хорошисты"][name] = score
elif score >= 50:
groups["Троечники"][name] = score
else:
groups["Не сдали"][name] = score
return groups
students = {"Аня": 92, "Боря": 76, "Ваня": 65, "Галя": 48, "Дима": 88, "Ева": 54}
print(distribute_students(students))Границы диапазонов проверяются сверху вниз.
Проверка в VS Code
- Создайте файл main.py и перенесите решение.
- Запустите python main.py в терминале.
- Сравните вывод с примером из задания.
- Проверьте крайние случаи: пустые коллекции, повторяющиеся значения и некорректные параметры.