Что выведет этот код?


d = dict.fromkeys(["a", "b"], 0)
print(d)

Результат выполнения кода:
{'a': 0, 'b': 0}
Метод dict.fromkeys(keys, value) создает новый словарь, где ключи берутся из iterable keys, а всем значениям присваивается значение value.

Вопрос: Что выведет следующий код?


d = dict.fromkeys(["a", "b"], 0)
print(d)
  

Ответ:

Данный код создаст словарь d, где ключи "a" и "b" будут иметь одно и то же значение 0. Таким образом, на экран будет выведено:


{'a': 0, 'b': 0}
  

Важно отметить:

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

Пример, демонстрирующий этот момент:


d = dict.fromkeys(["a", "b"], [])
print(d)  # Output: {'a': [], 'b': []}

d['a'].append(1)
print(d)  # Output: {'a': [1], 'b': [1]}
  

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


d = {key: [] for key in ["a", "b"]}
print(d)  # Output: {'a': [], 'b': []}

d['a'].append(1)
print(d)  # Output: {'a': [1], 'b': []}
  
0