English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Метод fromkeys() создает новый словарь на основе заданной последовательности элементов, с значениями, предоставленными пользователем.
Синтаксис метода fromkeys():
dictionary.fromkeys(sequence[, value])
Метод fromkeys() принимает два параметра:
sequence -Элементы последовательности, используемые в качестве ключей нового словаря
value (по умолчанию) -Значение, установленное для каждого элемента словаря
Метод fromkeys() возвращает новый словарь, у которого заданные элементы последовательности являются ключами.
Если был установлен параметр value, то каждый элемент нового созданного словаря будет установлен в значение, предоставленное value.
# Ключевые гласные keys = {'a', 'e', 'i', 'o', 'u'} vowels = dict.fromkeys(keys) print(vowels)
При выполнении этого программы, вывод будет:
{'a': None, 'u': None, 'o': None, 'e': None, 'i': None}
# Ключевые гласные keys = {'a', 'e', 'i', 'o', 'u'} value = 'vowel' vowels = dict.fromkeys(keys, value) print(vowels)
При выполнении этого программы, вывод будет:
{'a': 'vowel', 'u': 'vowel', 'o': 'vowel', 'e': 'vowel', 'i': 'vowel'}
# Ключевые гласные keys = {'a', 'e', 'i', 'o', 'u'} value = [1] vowels = dict.fromkeys(keys, value) print(vowels) # Обновленные значения 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 является изменяемым объектом (его значение можно изменить), напримерсписок,словарьЕсли изменяются изменяемые объекты, то при изменении каждого элемента в последовательности также обновляется.
Это потому, что для каждого элемента назначается ссылка на один и тот же объект (на один и тот же объект в памяти).
Чтобы избежать этой проблемы, мы используем понимание словаря.
# Ключевые гласные keys = {'a', 'e', 'i', 'o', 'u'} value = [1] vowels = { key: list(value) for key in keys } # Вы также можете использовать { key : value[:] for key in keys } print(vowels) # Обновленные значения 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]}
Здесь для каждого ключа в keys создается новый список из value, который назначается ему.
По сути, value не назначается элементам, а из него создается новый список, который затем назначается каждому элементу словаря.