Reputation: 11
How to form a list of dictionaries from a list nested dictionary ?
Input
ip = {'Science' : [88, 89], 'Arts' : [77, 78] }
Expected Output
op = [{'Science' : 88, 'Arts' : 77}, {'Science' : 89, 'Arts' : 78}]
Tried the below :
op = []
for i, j in zip(ip.keys(), ip.values()):
op.append({i:j[0]})
op.append({i:j[1]})
print(op)
My Result:
[{'Science': 88}, {'Science': 89}, {'Arts': 77}, {'Arts': 78}]
Upvotes: 1
Views: 71
Reputation: 9047
you can try list comprehension
[{k:ip[k][i] for k in ip.keys()} for i in range(len(list(ip.values())[0]))]
[{'Science': 88, 'Arts': 77}, {'Science': 89, 'Arts': 78}]
Upvotes: 1
Reputation: 27589
Zip the lists to get corresponding values, zip them with the keys to build dicts.
op = [dict(zip(ip, vs))
for vs in zip(*ip.values())]
Upvotes: 2