【问题标题】:How to convert a list of dictionaries to CSV format in Python, assuming the dictionaries can have different keys?假设字典可以有不同的键,如何在 Python 中将字典列表转换为 CSV 格式?
【发布时间】:2011-11-12 10:07:51
【问题描述】:

我有一个这样的字典列表:

[
{'item1':'bla', 'item2':'bli', 'item3':'blu'},
{'item1':'love', 'item3':'python'}
]

请注意,dict 2 没有键“item2”。 我想生成一个这样的 csv 输出,所以我可以将所有内容插入到 SQL 表中:

item1,item2,item3
bla,bli,blu
love,,python

如果所有字典共享相同的键,我找到了一种简单的方法,但如果不是这种情况,我不知道如何优雅地做到这一点。

【问题讨论】:

    标签: python sql csv dictionary key


    【解决方案1】:

    类似

    #Create a master list of keys
    allKeys = ()
    for row in YourListHere:
        allKeys.union(row.keys())
    
    #Sort the keys
    allKeys = list(allKeys).sorted()
    
    #Go through printing the rows
    for row in YourListHere:
        values = []
        for key in allKeys:
            #Add the values if it exists, if no key in this row add a blank
            if key in row:
                values.append(row[key])
            else:
                values.append('')
        print ','.join(values)
    

    【讨论】:

    • csv.DictWriter 为你做这件事时,你为什么要自己做呢?看我的回答。
    • 可能只是因为我放了示例代码。您的答案需要查找语法。我没有使用过 csv 库,不过看起来它可能是一个不错的解决方案。
    • 我也想看看数据而不是直接写文件。但在未来,当我对自己的工作更有信心时,我确信我会使用您的解决方案。
    • 适合自己,但请记住,在 Python 世界中,15 分钟阅读标准库文档并进行尝试通常值得花费数小时的编码和数小时的维护。
    【解决方案2】:

    csv.DictWriterfieldnamesrestval 参数一起使用。

    【讨论】:

      猜你喜欢
      • 2020-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-28
      • 2012-07-12
      • 1970-01-01
      相关资源
      最近更新 更多