Python Program to convert Dictionary to List by Repeating keys corresponding value times
Given a dictionary where keys are characters and their constituent values are numbers, the task here is to write a python program that can convert it to a list by repeating the key character value times.
Input : test_dict = {‘g’ : 2, ‘f’ : 3, ‘g’ : 1, ‘b’ : 4, ‘e’ : 1, ‘s’ : 4, ‘t’ : 3}
Output : [‘g’, ‘f’, ‘f’, ‘f’, ‘b’, ‘b’, ‘b’, ‘b’, ‘e’, ‘s’, ‘s’, ‘s’, ‘s’, ‘t’, ‘t’, ‘t’]
Explanation : f is added 3 times in list.
Input : test_dict = {‘g’ : 2, ‘f’ : 3, ‘g’ : 1, ‘b’ : 4, ‘e’ : 1}
Output : [‘g’, ‘f’, ‘f’, ‘f’, ‘b’, ‘b’, ‘b’, ‘b’, ‘e’]
Explanation : f is added 3 times in list.
Method 1 : Using loop and * operator
In this, elements are inserted using loop and occurrences are taken care using * operator.
Program:
Python3
# initializing dictionary test_dict = { 'g' : 2 , 'f' : 3 , 'g' : 1 , 'b' : 4 , 'e' : 1 , 's' : 4 , 't' : 3 } # printing original dictionary print ( "The original dictionary is : " + str (test_dict)) res = [] for key, val in test_dict.items(): # getting values using * operator res + = [key] * val # printing result print ( "The constructed list : " + str (res)) |
Output:
The original dictionary is : {‘g’: 1, ‘f’: 3, ‘b’: 4, ‘e’: 1, ‘s’: 4, ‘t’: 3}
The constructed list : [‘g’, ‘f’, ‘f’, ‘f’, ‘b’, ‘b’, ‘b’, ‘b’, ‘e’, ‘s’, ‘s’, ‘s’, ‘s’, ‘t’, ‘t’, ‘t’]
Method 2 : Using list comprehension
This uses nested loop approach using list comprehension as one liner to solve this problem. Iterate the values as much as occurrence required.
Program:
Python3
# initializing dictionary test_dict = { 'g' : 2 , 'f' : 3 , 'g' : 1 , 'b' : 4 , 'e' : 1 , 's' : 4 , 't' : 3 } # printing original dictionary print ( "The original dictionary is : " + str (test_dict)) # nested list comprehension to solve problem res = [key for key, val in test_dict.items() for _ in range (val)] # printing result print ( "The constructed list : " + str (res)) |
Output:
The original dictionary is : {‘g’: 1, ‘f’: 3, ‘b’: 4, ‘e’: 1, ‘s’: 4, ‘t’: 3}
The constructed list : [‘g’, ‘f’, ‘f’, ‘f’, ‘b’, ‘b’, ‘b’, ‘b’, ‘e’, ‘s’, ‘s’, ‘s’, ‘s’, ‘t’, ‘t’, ‘t’]