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': []}