如何从列表嵌套词典形成词典列表?

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

提问人:Shivasiddharth Narayanan 提问时间:2/9/2023 最后编辑:Kelly BundyShivasiddharth Narayanan 更新时间:2/9/2023 访问量:67

问:

如何从列表嵌套词典中形成词典列表?

输入

ip = {'Science' : [88, 89], 'Arts' : [77, 78] }

预期输出

op = [{'Science' : 88, 'Arts' : 77}, {'Science' : 89, 'Arts' : 78}]

尝试了以下方法:

op = []
for i, j in zip(ip.keys(), ip.values()):
   op.append({i:j[0]})
   op.append({i:j[1]})
print(op)

我的结果:

[{'Science': 88}, {'Science': 89}, {'Arts': 77}, {'Arts': 78}]

Python 列表 字典 多维数组 嵌套列表

评论

0赞 Epsi95 2/9/2023
我想您正在尝试将列式转换为行,只想问一下所有键的值列表的长度是否相同?

答:

1赞 Epsi95 2/9/2023 #1

您可以尝试列表推导

[{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}]

评论

1赞 Gameplay 2/9/2023
只是不要命名任何变量,因为它是一个内置函数,迟早会导致难以发现错误input
0赞 Epsi95 2/9/2023
没错,只是想保持与 OP 相同的名称
0赞 Gameplay 2/9/2023
不是故意挑剔的。我认为值得一提的是,如果你注意到(即使它与问题没有直接关系),有时它是如此超出范围,人们只能表明问题存在(并可能分享一些资源的链接),有时它是次要的,可以立即改进。干杯!
2赞 Kelly Bundy 2/9/2023 #2

压缩列表以获得相应的值,使用键压缩它们以构建字典。

op = [dict(zip(ip, vs))
      for vs in zip(*ip.values())]