theory_03__fromkeys.md
← К репозиторию занятия · less_19__dict/theory_03__fromkeys.md
Метод dict.fromkeys()
Удобный способ создать новый словарь, где все указанные ключи получают одно и то же значение (по умолчанию — None).
dict.fromkeys(iterable, value=None)
iterable— итерируемый объект (список, строка, кортеж и т.п.), содержащий ключи.value— (необязательный) — значение, которое получат все ключи (по умолчаниюNone).
Без значения
keys = ['a', 'b', 'c']
d = dict.fromkeys(keys)
print(d)
# {'a': None, 'b': None, 'c': None}
Указание значения по умолчанию
keys = ['a', 'b', 'c']
d = dict.fromkeys(keys, 0)
print(d)
# {'a': 0, 'b': 0, 'c': 0}
⚠️ Важно: если значение — изменяемый объект
Если передать изменяемый объект (например, список, словарь, множество) как value, все ключи будут ссылаться на один и тот же объект!
Пример1:
keys = ['a', 'b', 'c']
d = dict.fromkeys(keys, [])
d['a'].append(1)
print(d)
# {'a': [1], 'b': [1], 'c': [1]} ❗ все три ссылаются на один и тот же список!
Пример2:
keys = ['low', 'middle', 'high']
d = dict.fromkeys(keys, {})
d['low']['milk'] = 5
d['high']['diamond'] = 10000
print(d)
# {'low': {'milk': 5, 'diamond': 10000}, 'middle': {'milk': 5, 'diamond': 10000}, 'high': {'milk': 5, 'diamond': 10000}}