I am trying to split a dictionary of lists into a list of dictionaries.
I have tried following the examples here and here_2 . Here_2 is for python 2.x and does not seem to work on python 3.x
The first linked example, here, almost works except I only get the first dictionary key value pair back as 1 list.
using zip() to convert dictionary of list to list of dictionaries
test_dict = { "Rash" : [1], "Manjeet" : [1], "Akash" : [3, 4] }
res = [dict(zip(test_dict, i)) for i in zip(*test_dict.values())]
print ("The converted list of dictionaries " + str(res))
Out: The converted list of dictionaries [{‘Rash’: 1, ‘Akash’: 3, ‘Manjeet’: 1}]
DESIRED Out: The converted list of dictionaries [{‘Rash’: 1, ‘Akash’: 3, ‘Manjeet’: 1}, {‘Akash’: 4}]
Here's a slow and brittle solution with no bells or whistles (and bad naming in general):
def dictlist_to_listdict(dictlist):
output = []
for k, v in dictlist.items():
for i, sv in enumerate(v):
if i >= len(output):
output.append({k: sv})
else:
output[i].update({k: sv})
return output
if __name__ == "__main__":
test_dict = {"Rash": [1], "Manjeet": [1], "Akash": [3, 4]}
print(dictlist_to_listdict(test_dict))
When I ran your code on my notebook with Python 3, it does print the line you put as the desired output. Perharps I don't understand the question well enough
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.