我正在尝试获取一个字典列表中所有键的列表,以便填写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"]