微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从词典列表中提取所有键

如何解决从词典列表中提取所有键

all_keys = set().union(*(d.keys() for d in mylist))

:必须解压缩列表。现在已修复。

解决方法

我正在尝试获取词典列表中所有键的列表,以便填写csv.DictWriter的fieldnames参数。

以前,我有这样的事情:

[
{"name": "Tom","age": 10},{"name": "Mark","age": 5},{"name": "Pam","age": 7}
]

我当时习惯于使用fieldnames = list[0].keys()列表中的第一本字典并提取其键。

现在我有了类似的东西,其中一个字典比另一个字典具有更多的key:value对(可能是任何结果)。新密钥是根据来自API的信息动态添加的,因此它们可能会或可能不会出现在每个字典中,而且我事先也不知道会有多少个新密钥。

[
{"name": "Tom","age": 5,"height":4},"age": 7}
]

我不能只使用fieldnames = list[1].keys()它,因为它不一定是第二个具有额外键的元素。

一个简单的解决方案是找到键数量最多的字典,并将其用于字段名,但是如果您有这样的示例,则该方法将不起作用:

[
{"name": "Tom","age": 7,"weight":90}
]

其中第二和第三个字典都具有3个键,但最终结果应该确实是列表 ["name","age","height","weight"]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。