Словарь Python fromkeys ()

Метод fromkeys () создает новый словарь из заданной последовательности элементов со значением, предоставленным пользователем.

Синтаксис fromkeys()метода:

 Dictionary.fromkeys (последовательность (, значение))

fromkeys () Параметры

fromkeys() метод принимает два параметра:

  • последовательность - последовательность элементов, которая будет использоваться как ключи для нового словаря
  • value (Необязательно) - значение, которое устанавливается для каждого элемента словаря

Возвращаемое значение из fromkeys ()

fromkeys() Метод возвращает новый словарь с заданной последовательностью элементов в качестве ключей словаря.

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

Пример 1. Создайте словарь из последовательности ключей.

 # vowels keys keys = ('a', 'e', 'i', 'o', 'u' ) vowels = dict.fromkeys(keys) print(vowels)

Вывод

 ('a': нет, 'u': нет, 'o': нет, 'e': нет, 'i': нет) 

Пример 2: Создать словарь из последовательности ключей со значением

 # vowels keys keys = ('a', 'e', 'i', 'o', 'u' ) value = 'vowel' vowels = dict.fromkeys(keys, value) print(vowels)

Вывод

 ('a': 'гласный', 'u': 'гласный', 'o': 'гласный', 'e': 'гласный', 'i': 'гласный') 

Пример 3: Создать словарь из списка изменяемых объектов

 # vowels keys keys = ('a', 'e', 'i', 'o', 'u' ) value = (1) vowels = dict.fromkeys(keys, value) print(vowels) # updating the value value.append(2) print(vowels)

Вывод

 ('a': (1), 'u': (1), 'o': (1), 'e': (1), 'i': (1)) ('a': (1, 2 ), 'u': (1, 2), 'o': (1, 2), 'e': (1, 2), 'i': (1, 2)) 

Если value является изменяемым объектом (значение которого может быть изменено), таким как список, словарь и т. Д., При изменении изменяемого объекта каждый элемент последовательности также обновляется.

Это потому, что каждому элементу назначается ссылка на один и тот же объект (указывает на один и тот же объект в памяти).

Чтобы избежать этой проблемы, мы используем понимание словаря.

 # vowels keys keys = ('a', 'e', 'i', 'o', 'u' ) value = (1) vowels = ( key : list(value) for key in keys ) # you can also use ( key : value(:) for key in keys ) print(vowels) # updating the value value.append(2) print(vowels)

Вывод

 ('a': (1), 'u': (1), 'o': (1), 'e': (1), 'i': (1)) ('a': (1), 'u': (1), 'o': (1), 'e': (1), 'i': (1)) 

Здесь для каждого ключа в ключах создается и назначается новый список из значения.

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

Интересные статьи...