theory_03__fromkeys.md

Занятие 36Markdown61 строк

← К репозиторию занятия · 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}}