How to form a list of dictionaries from a list nested dictionary?

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

Answers (2)

Epsi95
Epsi95

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

Kelly Bundy
Kelly Bundy

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

Related Questions