我正在尝试获取字典列表中所有键的列表,以便填写 csv.DictWriter 的 fieldnames 参数。
以前,我有这样的事情:
[
{"name": "Tom", "age": 10},
{"name": "Mark", "age": 5},
{"name": "Pam", "age": 7}
]
我fieldnames = list[0].keys()
用来获取列表中的第一个字典并提取它的键。
现在我有这样的东西,其中一个字典比其他字典有更多的键:值对(可能是任何结果)。新键是根据来自 API 的信息动态添加的,因此它们可能会出现在每个字典中,也可能不会出现,而且我事先不知道会有多少新键。
[
{"name": "Tom", "age": 10},
{"name": "Mark", "age": 5, "height":4},
{"name": "Pam", "age": 7}
]
我不能只使用fieldnames = list[1].keys()
它,因为它不一定是第二个具有额外键的元素。
一个简单的解决方案是找到具有最多键的字典并将其用于字段名,但如果您有这样的示例,这将不起作用:
[
{"name": "Tom", "age": 10},
{"name": "Mark", "age": 5, "height":4},
{"name": "Pam", "age": 7, "weight":90}
]
第二个和第三个字典都有 3 个键,但最终结果应该是列表["name", "age", "height", "weight"]