fromkeys()
создает новый словарь с указанными ключами и одним и тем же значением для всех ключей.
Он вызывается у класса dict
и принимает два аргумента:
iterable
: Итерируемый объект, содержащий ключи для нового словаря.value
(необязательный): Значение, которое будет присвоено каждому ключу. Если не указано, по умолчанию None
.Метод fromkeys()
в Python используется для создания нового словаря (dictionary) с заданными ключами и общим значением для всех ключей.
Синтаксис:
dict.fromkeys(keys, value)
Параметры:
keys
: Обязательный параметр. Это итерируемый объект (например, список, кортеж, строка, множество), элементы которого будут использоваться в качестве ключей нового словаря.value
: Необязательный параметр. Значение, которое будет присвоено каждому ключу в новом словаре. Если не указано, то по умолчанию используется None
.Возвращаемое значение:
Метод возвращает новый словарь с указанными ключами и общим значением.
Важные моменты:
keys
содержит повторяющиеся элементы, то будет использован только последний экземпляр ключа.value
. Это особенно важно учитывать, если value
является изменяемым объектом (например, список). Изменение value
по одному ключу приведет к изменению value
для всех остальных ключей, так как все они ссылаются на один и тот же объект в памяти.Примеры:
Пример 1: Создание словаря с ключами из списка и значением None:
keys = ['a', 'b', 'c']
new_dict = dict.fromkeys(keys)
print(new_dict) # Вывод: {'a': None, 'b': None, 'c': None}
Пример 2: Создание словаря с ключами из кортежа и значением 0:
keys = ('x', 'y', 'z')
new_dict = dict.fromkeys(keys, 0)
print(new_dict) # Вывод: {'x': 0, 'y': 0, 'z': 0}
Пример 3: Осторожно с изменяемыми значениями (список):
keys = ['a', 'b', 'c']
value = [] # Пустой список
new_dict = dict.fromkeys(keys, value)
print(new_dict) # Вывод: {'a': [], 'b': [], 'c': []}
new_dict['a'].append(1)
print(new_dict) # Вывод: {'a': [1], 'b': [1], 'c': [1]} (Изменились все значения!)
Пример 4: Создание независимых значений с использованием comprehension:
keys = ['a', 'b', 'c']
new_dict = {key: [] for key in keys} # или dict((key, []) for key in keys)
print(new_dict) # Вывод: {'a': [], 'b': [], 'c': []}
new_dict['a'].append(1)
print(new_dict) # Вывод: {'a': [1], 'b': [], 'c': []} (Изменилось только значение для 'a')
Использование:
Метод fromkeys()
полезен, когда необходимо создать словарь, зная только ключи, и присвоить всем им некоторое общее начальное значение. Однако, следует быть внимательным при использовании изменяемых значений, чтобы избежать нежелательных побочных эффектов.