Sometimes, while working with Python data, we can have a problem in which we need to convert the list of dictionaries into a list of lists, this can be simplified by appending the keys just once if they are repetitive as mostly in records, this saves memory space. This type of problem can have applications in the web development domain. Let’s discuss certain ways in which this task can be performed.
Input: test_list = [{'Gfg': 123, 'best': 10}, {'Gfg': 51, 'best': 7}]
Output : [['Gfg', 'best'], [123, 10], [51, 7]]
Input : test_list = [{'Gfg' : 12}]
Output : [['Gfg'], [12]]
Explanation: In This, we are converting list of dictionaries to list of lists in Python.
Convert List of Dictionaries to List of Lists using Loop
A combination of above methods can be used to perform this task. In this, we perform the task of iterating using loop and brute force with the help of enumerate() to perform appropriate append in the result list.
Python3
test_list = [{ 'Nikhil' : 17 , 'Akash' : 18 , 'Akshat' : 20 },
{ 'Nikhil' : 21 , 'Akash' : 30 , 'Akshat' : 10 },
{ 'Nikhil' : 31 , 'Akash' : 12 , 'Akshat' : 19 }]
print ("The original list is : " + str (test_list))
res = []
for idx, sub in enumerate (test_list, start = 0 ):
if idx = = 0 :
res.append( list (sub.keys()))
res.append( list (sub.values()))
else :
res.append( list (sub.values()))
print ("The converted list : " + str (res))
|
Output
The original list is : [{'Akash': 18, 'Nikhil': 17, 'Akshat': 20}, {'Akash': 30, 'Nikhil': 21, 'Akshat': 10}, {'Akash': 12, 'Nikhil': 31, 'Akshat': 19}]
The converted list : [['Akash', 'Nikhil', 'Akshat'], [18, 17, 20], [30, 21, 10], [12, 31, 19]]
Time complexity: O(n * m), where n is the number of dictionaries in the list test_list and m is the number of keys in each dictionary.
Auxiliary space: O(n * m), where n is the number of dictionaries in the list test_list and m is the number of keys in each dictionary.
Convert List of Dictionaries to List of Lists using List Comprehension
This task can be solved in one line using list comprehension. In this, we extract the keys initially using keys() and values using values().
Python3
test_list = [{ 'Nikhil' : 17 , 'Akash' : 18 , 'Akshat' : 20 },
{ 'Nikhil' : 21 , 'Akash' : 30 , 'Akshat' : 10 },
{ 'Nikhil' : 31 , 'Akash' : 12 , 'Akshat' : 19 }]
print ("The original list is : " + str (test_list))
res = [[key for key in test_list[ 0 ].keys()], * [ list (idx.values()) for idx in test_list ]]
print ("The converted list : " + str (res))
|
Output
The original list is : [{'Akash': 18, 'Nikhil': 17, 'Akshat': 20}, {'Akash': 30, 'Nikhil': 21, 'Akshat': 10}, {'Akash': 12, 'Nikhil': 31, 'Akshat': 19}]
The converted list : [['Akash', 'Nikhil', 'Akshat'], [18, 17, 20], [30, 21, 10], [12, 31, 19]]
Time complexity: O(n * m), where n is the number of dictionaries in the list and m is the average number of keys in each dictionary.
Auxiliary space: O(n * m), as we are creating a new list of lists to store the converted result.
Convert List of Dictionaries to List of Lists using Map() function and Lambda function
In this approach, the lambda function takes a dictionary as an argument, extracts its values, and returns them as a list. The map() function applies this lambda function to each dictionary in the list and returns a list of lists. The first list in the result is the keys from the first dictionary in the original list. Finally, we use the insert() method to add this list as the first element in the result list.
Python3
test_list = [{ 'Nikhil' : 17 , 'Akash' : 18 , 'Akshat' : 20 },
{ 'Nikhil' : 21 , 'Akash' : 30 , 'Akshat' : 10 },
{ 'Nikhil' : 31 , 'Akash' : 12 , 'Akshat' : 19 }]
print ( "The original list is : " + str (test_list))
res = list ( map ( lambda x: list (x.values()), test_list))
res.insert( 0 , list (test_list[ 0 ].keys()))
print ( "The converted list : " + str (res))
|
OUTPUT:
The original list is : [{'Nikhil': 17, 'Akash': 18, 'Akshat': 20}, {'Nikhil': 21, 'Akash': 30, 'Akshat': 10}, {'Nikhil': 31, 'Akash': 12, 'Akshat': 19}]
The converted list : [['Nikhil', 'Akash', 'Akshat'], [17, 18, 20], [21, 30, 10], [31, 12, 19]]
Time complexity: O(nm), where n is the number of dictionaries in the list and m is the number of key-value pairs in each dictionary.
Auxiliary space: O(nm), where n is the number of dictionaries in the list and m is the number of key-value pairs in each dictionary.
Convert List of Dictionaries to List of Lists using Pandas Library
- Import the pandas library.
- Convert the list of dictionaries to a pandas dataframe using the “pd.DataFrame()” method.
- Use the “values.tolist()” method to convert the dataframe to a list of lists.
- Extract the column names from the dataframe and insert them as the first element of the resulting list of lists.
Python3
import pandas as pd
test_list = [{ 'Nikhil' : 17 , 'Akash' : 18 , 'Akshat' : 20 },
{ 'Nikhil' : 21 , 'Akash' : 30 , 'Akshat' : 10 },
{ 'Nikhil' : 31 , 'Akash' : 12 , 'Akshat' : 19 }]
df = pd.DataFrame(test_list)
res = df.values.tolist()
res.insert( 0 , list (df.columns))
print ( "The converted list : " + str (res))
|
OUTPUT;
The converted list : [['Nikhil', 'Akash', 'Akshat'], [17, 18, 20], [21, 30, 10], [31, 12, 19]]
Time complexity: O(n), where n is the number of dictionaries in the given list.
Auxiliary space: O(n), where n is the number of dictionaries in the given list.
Convert List of Dictionaries to List of Lists using Zip() function
Use the built-in zip() function and list() method to convert the list of dictionaries to a list of lists.
Step-by-step approach:
- Initialize an empty list to hold the final result.
- Extract the keys from the first dictionary in the input list and append them as a list to the final result list.
- Extract the values from each dictionary in the input list and append them as a list to the final result list using the zip() function.
- Return the final result list.
Below is the implementation of the above approach:
Python3
test_list = [{ 'Nikhil' : 17 , 'Akash' : 18 , 'Akshat' : 20 },
{ 'Nikhil' : 21 , 'Akash' : 30 , 'Akshat' : 10 },
{ 'Nikhil' : 31 , 'Akash' : 12 , 'Akshat' : 19 }]
print ( "The original list is: " + str (test_list))
keys = list (test_list[ 0 ].keys())
values = [ list (x.values()) for x in test_list]
res = [keys] + list ( zip ( * values))
print ( "The converted list : " + str (res))
res = []
keys = list (test_list[ 0 ].keys())
res.append(keys)
for d in test_list:
values = [d[key] for key in keys]
res.append(values)
print ( "The converted list is: " + str (res))
|
Output
The original list is: [{'Nikhil': 17, 'Akash': 18, 'Akshat': 20}, {'Nikhil': 21, 'Akash': 30, 'Akshat': 10}, {'Nikhil': 31, 'Akash': 12, 'Akshat': 19}]
The original list is : [{'Nikhil': 17, 'Akash': 18, 'Akshat': 20}, {'Nikhil': 21, 'Akash': 30, 'Akshat': 10}, {'Nikhil': 31, 'Akash': 12, 'Akshat': 19}]
The converted list : [['Nikhil', 'Akash', 'Akshat'], (17, 21, 31), (18, 30, 12), (20, 10, 19)]
The converted list is: [['Nikhil', 'Akash', 'Akshat'], [17, 18, 20], [21, 30, 10], [31, 12, 19]]
Time complexity: O(n^2), where n is the number of dictionaries in the input list.
Auxiliary space: O(n), where n is the number of dictionaries in the input list.
Please Login to comment...