English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
El método fromkeys() crea un nuevo diccionario basado en la secuencia de elementos dados, que tiene los valores proporcionados por el usuario.
La sintaxis del método fromkeys() es:
dictionary.fromkeys(sequence[, value])
El método fromkeys() toma dos parámetros:
sequence -La secuencia de elementos utilizados como claves del nuevo diccionario
value (opcional) -El valor establecido para cada elemento del diccionario
El método fromkeys() devuelve un nuevo diccionario que tiene la secuencia de elementos dados como claves del diccionario.
If the value parameter is set, each element of the newly created dictionary will be set to the provided value.
# Vowel keys keys = {'a', 'e', 'i', 'o', 'u'} vowels = dict.fromkeys(keys) print(vowels)
When running the program, the output is:
{'a': None, 'u': None, 'o': None, 'e': None, 'i': None}
# Vowel keys keys = {'a', 'e', 'i', 'o', 'u'} value = 'vowel' vowels = dict.fromkeys(keys, value) print(vowels)
When running the program, the output is:
{'a': 'vowel', 'u': 'vowel', 'o': 'vowel', 'e': 'vowel', 'i': 'vowel'}
# Vowel keys keys = {'a', 'e', 'i', 'o', 'u'} value = [1] vowels = dict.fromkeys(keys, value) print(vowels) # Updated value value.append(2) print(vowels)
When running the program, the output is:
{'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}]
If the provided value is a mutable object (whose value can be changed), such aslist,dictionaryIf, etc., when a mutable object is modified, each element in the sequence will also be updated.
This is because, for each element, a reference to the same object (pointing to the same object in memory) is assigned.
To avoid this problem, we use dictionary comprehension.
# Vowel 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) # Updated value value.append(2) print(vowels)
When running the program, the output is:
{'a': [1], 'u': [1], 'o': [1], 'e': [1], 'i': [1}] {'a': [1], 'u': [1], 'o': [1], 'e': [1], 'i': [1}]
Here, for each key in keys, a new list is created from value and assigned to it.
In essence, value is not assigned to the element, but a new list is created from it, and then it is assigned to each element in the dictionary.