Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

Python Dictionary fromkeys() Method

  • Difficulty Level : Easy
  • Last Updated : 05 Oct, 2021

Python dictionary fromkeys() function returns the dictionary with key mapped and specific value. It creates a new dictionary from the given sequence with the specific value.

Syntax : fromkeys(seq, val)

Parameters : 

  • seq : The sequence to be transformed into a dictionary.
  • val : Initial values that need to be assigned to the generated keys. Defaults to None.

Returns : A dictionary with keys mapped to None if no value is provided, else to the value provided in the field. 

Example of Python Dictionary fromkeys() Method

Example 1: Demonstrating the working of fromkeys() 

Python3




# Python 3 code to demonstrate
# working of fromkeys()
 
# initializing sequence
seq = {'a', 'b', 'c', 'd', 'e'}
 
# using fromkeys() to convert sequence to dict
# initializing with None
res_dict = dict.fromkeys(seq)
 
# Printing created dict
print("The newly created dict with None values : " + str(res_dict))
 
 
# using fromkeys() to convert sequence to dict
# initializing with 1
res_dict2 = dict.fromkeys(seq, 1)
 
# Printing created dict
print("The newly created dict with 1 as value : " + str(res_dict2))

Output : 

The newly created dict with None values : {‘d’: None, ‘a’: None, ‘b’: None, ‘c’: None, ‘e’: None} 
The newly created dict with 1 as value : {‘d’: 1, ‘a’: 1, ‘b’: 1, ‘c’: 1, ‘e’: 1}

Behavior of fromdict() with Mutable objects as values

fromdict() can also be supplied with the mutable object as the default value. But in this case, a deep copy is made of the dictionary, i.e if we append value in the original list, the append takes place in all the values of keys.

Prevention: Certain dictionary comprehension techniques can be used to create a new list as key values, that do not point to the original list as values of keys.

Example 2: Demonstrating the behavior with mutable objects

Python3




# Python 3 code to demonstrate
# behaviour with mutable objects
 
# initializing sequence and list
seq = {'a', 'b', 'c', 'd', 'e'}
lis1 = [2, 3]
 
# using fromkeys() to convert sequence to dict
# using conventional method
res_dict = dict.fromkeys(seq, lis1)
 
# Printing created dict
print("The newly created dict with list values : "
      + str(res_dict))
 
# appending to lis1
lis1.append(4)
 
# Printing dict after appending
# Notice that append takes place in all values
print("The dict with list values after appending : "
      + str(res_dict))
 
lis1 = [2, 3]
print('\n')
 
# using fromkeys() to convert sequence to dict
# using dict. comprehension
res_dict2 = {key: list(lis1) for key in seq}
 
# Printing created dict
print("The newly created dict with list values : "
      + str(res_dict2))
 
# appending to lis1
lis1.append(4)
 
# Printing dict after appending
# Notice that append doesnt take place now.
print("The dict with list values after appending (no change) : "
      + str(res_dict2))

Output:

The newly created dict with list values : {‘d’: [2, 3], ‘e’: [2, 3], ‘c’: [2, 3], ‘a’: [2, 3], ‘b’: [2, 3]} 
The dict with list values after appending : {‘d’: [2, 3, 4], ‘e’: [2, 3, 4], ‘c’: [2, 3, 4], ‘a’: [2, 3, 4], ‘b’: [2, 3, 4]}
The newly created dict with list values : {‘d’: [2, 3], ‘e’: [2, 3], ‘c’: [2, 3], ‘a’: [2, 3], ‘b’: [2, 3]} 
The dict with list values after appending (no change) : {‘d’: [2, 3], ‘e’: [2, 3], ‘c’: [2, 3], ‘a’: [2, 3], ‘b’: [2, 3]}

Example 3: Python Dictionary fromkeys() default value

Python3




x = ('key1', 'key2', 'key3')
y = 0
 
d = dict.fromkeys(x, y)
 
print(d)

Output:

{'key1': 0, 'key2': 0, 'key3': 0}

Example 4: Python Dictionary fromkeys() with an empty list

Python3




# Python3 code to demonstrate
# to initialize dictionary with list
# using fromkeys()
   
# using fromkeys() to construct
new_dict = dict.fromkeys(range(4), [])
       
# printing result
print ("New dictionary with empty lists as keys : " + str(new_dict))

Output:

New dictionary with empty lists as keys : {0: [], 1: [], 2: [], 3: []}


My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!