English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
The fromkeys() method creates a new dictionary based on the given element sequence, with the values provided by the user.
The syntax of the fromkeys() method is:
dictionary.fromkeys(sequence[, value])
The fromkeys() method takes two parameters:
sequence -The element sequence used as the new dictionary key
value (optional) -The value set for each element of the dictionary
The fromkeys() method returns a new dictionary with the given element sequence as the dictionary keys.
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,dictionaryWhen, if 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.
Essentially, 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.