Я пытаюсь получить список всех ключей в списке словарей, чтобы заполнить аргумент fieldnames для csv.DictWriter.
раньше, у меня было что-то вроде этого:
[
{"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"]