Пусть d1 = {'a': 1, 'b': 2} и d2 = {'b': 3, 'c': 4}. Что вернёт {**d1, **d2}?

AСловарь {'a': 1, 'b': 2, 'b': 3, 'c': 4} — оба значения ключа 'b' сохранятся
BБудет исключение KeyError, потому что ключ 'b' встречается в обоих словарях
CСловарь {'a': 1, 'b': 3, 'c': 4} — значение из второго словаря перезапишет первое
DСловарь {'a': 1, 'b': 2, 'c': 4} — значение из первого словаря останется неизменным
Правильный ответ. При распаковке ** совпадающие ключи перезаписываются значениями из более позднего словаря.

Разбор

Выражение {**d1, **d2} создаёт новый словарь, последовательно распаковывая d1, затем d2. Ключ 'b' есть в обоих словарях: сначала записывается 'b': 2 из d1, затем перезаписывается на 'b': 3 из d2. Итог: {'a': 1, 'b': 3, 'c': 4}. Побеждает тот словарь, который распаковывается последним.

Проверь себя · 1/3разбор после ответа
Пусть t = (1, 2, 3). Что произойдёт при попытке выполнить t[0] = 10?
Тренировать Python в Telegram

Ещё вопросы по теме «Синтаксис и типы данных»