Python: Dictionary with Multiple Values per Key

How we can create a dictionary with multiple values per key in python.

In python a dictionary is one of the important datatype which is used to store data values in key : value pair. Generally keys and values are mapped one-to-one. But it is not impossible that we can not map multiple values to a single key. So in this article we will discuss how we can map multiple values per key in dictionary.

Syntax of dictionary :

dictionary_name = {key1: value1, key2: value2}

where,

  • key1, key2… represents keys in a dictionary. These keys can be a string, integer, tuple, etc. But keys needs to be unique.
  • value1, value2… represents values in dictionary. These values can be numbers, strings, list or list within a list etc.
  • key and value is separated by : symbol.
  • key-value pair symbol is separated by , symbol.

Example of a dictionary covid_case where multiple values are associated with single key.

covid_case = {"January": [1000,1500,2000], "February": [1100,1300,1500], "March":[2000,2200,2400] }

So, now let’s explore the concept how to add a key:value pair to dictionary in Python.

Create a dictionary with a list as the value :

Generally, when multiple values are mapped to a single key, then that dictionary is called as MultiDict. So, let’s see an example how in dictionary multiple values are mapped to a single key.

#Program :

#Multiple values mapped to single key
covid_case = {"January": [1000,1500,2000], "February": [1100,1300,1500], "March":[2000,2200,2400] }
#printing the multidict
print("Dictionary with multiple values per key :")
print(covid_case)
Output :
Dictionary with multiple values per key :
{"January": [1000,1500,2000], "February": [1100,1300,1500], "March":[2000,2200,2400] }

In this example string keys have taken in a dictionary where multiple integer values are mapped to single key.

Finding multiple values of a key in the dictionary :

Like how we created a dictionary with a list as a value, similar we can get a list as output also. Means it is possible to get multiple values of a key in dictionary. So, let’s see an example how we can get multiple values of a key as a list.

#Program :

#Multiple values mapped to single key
covid_case = {"January": [1000,1500,2000], "February": [1100,1300,1500], "March":[2000,2200,2400] }
#printing the multidict
print("Complete dictionary :")
print(covid_case)
#Getting the list(multiple values) at key February
output_list=covid_case["February"]
#printing the multiple values of key February
print("Multiple values of key 'February' :")
print(output_list)
Output :
Complete dictionary :
{"January": [1000,1500,2000], "February": [1100,1300,1500], "March":[2000,2200,2400] }
Multiple values of key 'February' :
[1100,1300,1500]

Append multiple values to a key in a dictionary :

It is easy to create a dictionary where multiple values are mapped to a single key. But the tricky part is appending multiple values where already multiple values are mapped to that key.

So there 2 cases may arise i.e

  1. The key is already present with multiple values and new values will be added in that key.
  2. The key is not present in the dictionary, so new key with multiple values will be appended to that dictionary.

CASE -1 : Key is already present in dictionary :

#Program :

#Multiple values mapped to single key
covid_case = {"January": [1000,1500,2000], "February": [1100,1300,1500], "March":[2000,2200,2400] }
#printing the multidict
print("Before append :")
print(covid_case)


# Append multiple values to a key in dictionary covid_case 
def add_values_to_key(temp_dict, key, list_of_values):
    if key not in temp_dict:
        temp_dict[key] = list()
    temp_dict[key].extend(list_of_values)
    return temp_dict
    
    
# Append multiple values for existing key 'March'
covid_case = add_values_to_key(covid_case, 'March', [2600, 2800])
#printing the multidict
print("After append :")
print(covid_case)
Output :
Before append :
{"January": [1000,1500,2000], "February": [1100,1300,1500], "March":[2000,2200,2400] }
After append :
{"January": [1000,1500,2000], "February": [1100,1300,1500], "March":[2000,2200,2400,2600,2800] }

CASE -2 : Key is not present in dictionary :

#Program :

#Multiple values mapped to single key
covid_case = {"January": [1000,1500,2000], "February": [1100,1300,1500], "March":[2000,2200,2400] }
#printing the multidict
print("Before append :")
print(covid_case)


# Append multiple values to a key in dictionary covid_case 
def add_values_to_key(temp_dict, key, list_of_values):
    if key not in temp_dict:
        temp_dict[key] = list()
    temp_dict[key].extend(list_of_values)
    return temp_dict
    
    
# Append multiple values for key 'April'
#As key 'April' is not present so new key with multiple values will be added
covid_case = add_values_to_key(covid_case, 'April', [3000, 3500])
#printing the multidict
print("after append :")
print(covid_case)
Output :
Before append :
{"January": [1000,1500,2000], "February": [1100,1300,1500], "March":[2000,2200,2400] }
After append :
{"January": [1000,1500,2000], "February": [1100,1300,1500], "March":[2000,2200,2400], "April":[3000,3500 }