csv.DictWriterのfieldnames引数に入力するために、辞書のリストにあるすべてのキーのリストを取得しようとしています。
以前、私はこのようなものを持っていました:
[
{"name": "Tom", "age": 10},
{"name": "Mark", "age": 5},
{"name": "Pam", "age": 7}
]
そして私はfieldnames = list[0].keys()
リストの最初の辞書を取り、そのキーを抽出するために使用していました。
今、私はこのようなものを持っており、辞書の1つが他の辞書よりも多くのkey:valueペアを持っています(結果のいずれかである可能性があります)。新しいキーはAPIからの情報に基づいて動的に追加されるため、各辞書で発生する場合と発生しない場合があり、新しいキーがいくつあるかは事前にはわかりません。
[
{"name": "Tom", "age": 10},
{"name": "Mark", "age": 5, "height":4},
{"name": "Pam", "age": 7}
]
fieldnames = list[1].keys()
余分なキーを持つのは必ずしも2番目の要素ではないため、私は単に使用することはできません。
簡単な解決策は、キーの数が最も多い辞書を見つけてフィールド名に使用することですが、次のような例がある場合は機能しません。
[
{"name": "Tom", "age": 10},
{"name": "Mark", "age": 5, "height":4},
{"name": "Pam", "age": 7, "weight":90}
]
ここで、2番目と3番目の辞書の両方に3つのキーがありますが、最終結果は実際にはリストになります。["name", "age", "height", "weight"]