Python | Ways to create a dictionary of Lists

Till now, we have seen the ways to creating dictionary in multiple ways and different operations on the key and values in dictionary. Now, let’s see different ways of creating a dictionary of list.

Note that the restriction with keys in Python dictionary is only immutable data types can be used as keys, which means we cannot use a dictionary of list as a key.

filter_none

edit
close

play_arrow

link
brightness_4
code

# Creating a dictionary
myDict = {[1, 2]: 'Geeks'}
  
print(myDict)

chevron_right


Output:

TypeError: unhashable type: 'list'

But the same can be done very wisely with values in dictionary. Let’s see all the different ways we can create a dictionary of Lists.

Method #1: Using subscript



filter_none

edit
close

play_arrow

link
brightness_4
code

# Creating an empty dictionary
myDict = {}
  
# Adding list as value
myDict["key1"] = [1, 2]
myDict["key2"] = ["Geeks", "For", "Geeks"
  
print(myDict)

chevron_right


Output:

{'key2': ['Geeks', 'For', 'Geeks'], 'key1': [1, 2]}

 
Method #2: Adding nested list as value using append() method.

Create a new list and we can simply append that list to the value.

filter_none

edit
close

play_arrow

link
brightness_4
code

# Creating an empty dictionary
myDict = {}
  
# Adding list as value
myDict["key1"] = [1, 2]
  
# creating a list
lst = ['Geeks', 'For', 'Geeks']
  
# Adding this list as sublist in myDict
myDict["key1"].append(lst)
  
print(myDict)

chevron_right


Output:

{'key1': [1, 2, ['Geeks', 'For', 'Geeks']]}

 
Method #3: Using setdefault() method

Iterate the list and keep appending the elements till given range using setdefault() method.

filter_none

edit
close

play_arrow

link
brightness_4
code

# Creating an empty dict
myDict = dict()
  
# Creating a list
valList = ['1', '2', '3']
  
# Iterating the elements in list
for val in valList:
    for ele in range(int(val), int(val) + 2): 
        myDict.setdefault(ele, []).append(val)
  
print(myDict)

chevron_right


Output:

{1: ['1'], 2: ['1', '2'], 3: ['2', '3'], 4: ['3']}

 
Method #4: Using list comprehension

filter_none

edit
close

play_arrow

link
brightness_4
code

# Creating a dictionary of lists
# using list comprehension
d = dict((val, range(int(val), int(val) + 2))
                  for val in ['1', '2', '3'])
  
print(d)

chevron_right


Output:

{'1': [1, 2], '3': [3, 4], '2': [2, 3]}

 
Method #5: Using defaultdict

Note that the same thing can also be done with simple dictionary but using defaultdict is more efficient for such cases.

filter_none

edit
close

play_arrow

link
brightness_4
code

# Importing defaultdict
from collections import defaultdict
  
lst = [('Geeks', 1), ('For', 2), ('Geeks', 3)]
orDict = defaultdict(list)
  
# iterating over list of tuples
for key, val in lst:
    orDict[key].append(val)
  
print(orDict)

chevron_right


Output:

defaultdict(, {'For': [2], 'Geeks': [1, 3]})

Note that there are only two key:value pairs in output dictionary but the input list contains three tuples. The first element(i.e. key) is same for first and third tuple and two keys can never be same.



My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.