Dictionary comprehension

Тренажер по Python для пользователей с начальным уровнем подготовки.

Тренажер по Python

Словарные включения (dictionary comprehension) — это элегантный способ создавать словари в одну строку. Вместо того чтобы писать цикл и постепенно добавлять пары ключ-значение, ты описываешь всю логику компактно. Синтаксис похож на генераторы списков, но результатом будет словарь. В этом тренажере ты научишься создавать словари из списков, фильтровать данные по условию, трансформировать ключи и значения, а также работать с вложенными структурами. Задания идут от простых примеров к более хитрым конструкциям. Не торопись — лучше разобраться в каждом шаге, чем потом путаться в скобках и двоеточиях.

Список тем

Базовый синтаксис dictionary comprehension

id: 40026_task1

Создайте словарь, где ключами будут числа от 1 до 3, а значениями — их квадраты. Используйте dictionary comprehension с функцией range().

Заполните пропуски
# Создаём словарь {1: 1, 2: 4, 3: 9}
squares = input1Sn: n input2S 2 for n in input3Sinput4S
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Что создаст этот comprehension?

id: 40026_task2

Проанализируйте dictionary comprehension, который создаёт словарь из списка слов. Что будет выведено на экран?

Выберите правильный вариант ответа
words = ['cat', 'dog', 'bird']
lengths = {word: len(word) for word in words}
print(lengths)
Сообщения
Проверить
Показать подсказку

Собери comprehension из токенов

id: 40026_task3

Используя элементы из банка, соберите dictionary comprehension, который создаёт словарь из списка чисел. Ключом будет число, значением — число, умноженное на 10.

Нужно правильно расставить в пропуски предложенные варианты
numbers = [1, 2, 3]
result = {input1S: input2S input3S input4S in numbers}
# Ожидаемый результат: {1: 10, 2: 20, 3: 30}
x
x * 10
for
x
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Вычисли результат comprehension

id: 40026_task4

Этот код создаёт словарь из списка чисел. Определите, сколько элементов будет в итоговом словаре, и введите это число.

Что должно получиться?
nums = [5, 10, 15, 20, 25]
doubled = {n: n * 2 for n in nums}
print(len(doubled))
Сообщения
Проверить
Показать подсказку

Comprehension с условием if

id: 40026_task5

Создайте словарь только из чётных чисел списка. Ключ — само число, значение — его квадрат. Используйте условие фильтрации в конце comprehension.

Заполните пропуски
numbers = [1, 2, 3, 4, 5, 6]
# Результат: {2: 4, 4: 16, 6: 36}
even_squares = {n: n ** 2 for n in numbers input1S n input2S 2 input3S 0}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Исправьте синтаксическую ошибку

id: 40026_task6

В этом коде есть ошибка в синтаксисе dictionary comprehension. Найдите строку с ошибкой и исправьте её.

Найдите ошибку и исправьте
names = ['Alice', 'Bob', 'Charlie']
name_lengths = {name, len(name) for name in names}
print(name_lengths)
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Comprehension с условием if

id: 40026_task7

Этот comprehension фильтрует словарь, оставляя только определённые элементы. Что будет выведено?

Выберите правильный вариант ответа
prices = {'apple': 30, 'banana': 25, 'mango': 80, 'kiwi': 60}
expensive = {k: v for k, v in prices.items() if v > 50}
print(expensive)
Сообщения
Проверить
Показать подсказку

Сопоставьте comprehension с результатом

id: 40026_task8

Сопоставьте каждый dictionary comprehension с результатом его выполнения. Список nums = [1, 2, 3] для всех примеров.

Сопоставьте строки в правой части с соответствующими строками в левой по порядковому номеру
{1: 1, 2: 2, 3: 3}
{1: 2, 2: 4, 3: 6}
{'1': 1, '2': 2, '3': 3}
{str(n): n for n in nums}
{n: n * 2 for n in nums}
{n: n for n in nums}
Сообщения
Проверить
Показать подсказку

Соберите код с enumerate

id: 40026_task9

Соберите код, который создаёт словарь, где ключом будет индекс элемента, а значением — сам элемент списка. Используется функция enumerate(). Одна строка лишняя.

Перетяните в правильном порядке строки из одного блока в другой
indexed = {i: fruit for i, fruit in enumerate(fruits)}
print(indexed)
fruits = ['apple', 'banana', 'cherry']
indexed = {fruit: i for i, fruit in enumerate(fruits)}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Трансформация значений словаря

id: 40026_task10

Создайте новый словарь на основе существующего, преобразовав все значения (цены) — увеличьте их на 10%. Ключи остаются без изменений.

Заполните пропуски
prices = {'bread': 50, 'milk': 80, 'eggs': 120}
# Увеличиваем все цены на 10%
new_prices = {k: input1S for input2S in prices.input3S()}
# Результат: {'bread': 55.0, 'milk': 88.0, 'eggs': 132.0}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Классификация: comprehension или set?

id: 40026_task11

Фигурные скобки в Python могут означать и словарь, и множество. Распределите выражения по категориям: что создаёт словарь (dict), а что — множество (set).

Перетяните элементы в соответствующие блоки
Dictionary (словарь)
Set (множество)
{x: x**2 for x in range(3)}
{x for x in range(3)}
{k: v for k, v in pairs}
{len(s) for s in words}
{i: names[i] for i in range(len(names))}
{word.upper() for word in words}
Сообщения
Проверить
Показать подсказку

Comprehension с zip

id: 40026_task12

Функция zip() объединяет два списка попарно. Определите, какое значение будет у ключа 'b' в итоговом словаре.

Что должно получиться?
keys = ['a', 'b', 'c']
values = [10, 20, 30]
data = {k: v for k, v in zip(keys, values)}
print(data['b'])
Сообщения
Проверить
Показать подсказку

Ошибка в условии comprehension

id: 40026_task13

Код должен создать словарь только из положительных чисел, но содержит ошибку. Найдите и исправьте проблемную строку.

Найдите ошибку и исправьте
numbers = [-2, 5, -1, 8, 3, -4]
positive = {n: n * 10 if n > 0 for n in numbers}
print(positive)
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Инверсия словаря

id: 40026_task14

Этот comprehension меняет местами ключи и значения исходного словаря. Что будет выведено?

Выберите правильный вариант ответа
original = {'x': 1, 'y': 2, 'z': 3}
inverted = {v: k for k, v in original.items()}
print(inverted)
Сообщения
Проверить
Показать подсказку

Comprehension с тернарным оператором

id: 40026_task15

Создайте словарь, где для каждого числа из списка значением будет 'even' (чётное) или 'odd' (нечётное). Используйте тернарный оператор.

Нужно правильно расставить в пропуски предложенные варианты
nums = [1, 2, 3, 4]
parity = {n: input1S if input2S else input3S for n in nums}
# Результат: {1: 'odd', 2: 'even', 3: 'odd', 4: 'even'}
'even'
'odd'
n % 2 == 0
n % 2 != 0
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку
Это последнее упражнение модуля. Для закрепления знаний рекомендуем пройти тест:
Словари в Python: полное тестирование знаний
Словари в Python: полное тестирование знаний
Проверьте свои знания о словарях в Python!Словари (dict) — одна из самых важных и часто используемых структур данных в Python. Они позволяют хранить данные в формате «ключ-значение» и обеспечивают быстрый доступ к элементам по ключу. Понимание работы со словарями критически важно для любого Python-разработчика.Что проверяет ...
НайтиКурс.Ру