gpt4 book ai didi

python - 将 Python 字典写入 CSV,其中键 = 列,值 = 行

转载 作者:太空狗 更新时间:2023-10-30 02:12:45 24 4
gpt4 key购买 nike

我有一个字典列表,我希望它们能够在 Excel 中打开,并且格式正确。这是我到目前为止所拥有的,使用 csv:

list_of_dicts = [{'hello': 'goodbye'}, {'yes': 'no'}]
out_path= "/docs/outfile.txt"
out_file = open(ipath, 'wb')

writer = csv.writer(ofile, dialect = 'excel')

for items in list_of_dicts:
for k,v in items.items():
writer.writerow([k,v])

显然,当我在 Excel 中打开输出时,它的格式如下:

key  value
key value

我想要的是:

key   key   key

value value value

我不知道该怎么做,所以不胜感激。此外,我希望列名成为字典键,而不是默认的“A、B、C”等。抱歉,如果这很愚蠢。

谢谢

最佳答案

csv 模块有一个 DictWriter类,这在 another SO answer 中有很好的介绍。 .关键点是在实例化 DictWriter 时需要知道所有列标题。您可以从 list_of_dicts 构建字段名称列表,如果这样,您的代码将变为

list_of_dicts = [{'hello': 'goodbye'}, {'yes': 'no'}]
out_path= "/docs/outfile.txt"
out_file = open(out_path, 'wb')

fieldnames = sorted(list(set(k for d in list_of_dicts for k in d)))
writer = csv.DictWriter(out_file, fieldnames=fieldnames, dialect='excel')

writer.writeheader() # Assumes Python >= 2.7
for row in list_of_dicts:
writer.writerow(row)
out_file.close()

我构建字段名的方式会扫描整个 list_of_dicts,因此它会随着大小的增加而变慢。您应该直接从数据源构建 fieldnames,例如如果您的数据源也是一个 csv 文件,您可以使用 DictReader 并使用 fieldnames = reader.fieldnames

您还可以将 for 循环替换为对 writer.writerows(list_of_dicts) 的单个调用,并使用 with block 来处理文件关闭,在这种情况下你的代码将变成

list_of_dicts = [{'hello': 'goodbye'}, {'yes': 'no'}]
out_path= "/docs/outfile.txt"

fieldnames = sorted(list(set(k for d in list_of_dicts for k in d)))

with open(out_path, 'wb') as out_file:
writer = csv.DictWriter(out_file, fieldnames=fieldnames, dialect='excel')
writer.writeheader()
writer.writerows(list_of_dicts)

关于python - 将 Python 字典写入 CSV,其中键 = 列,值 = 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13660240/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com