将不带括号的列表的字典值写入 CSV

Writing a dictionary value that is a list without brackets to CSV

我有一本字典,d 具有以下结构:

{'k':[5, -2, 6, 7, 2, 4, 8], 'c':[6, 3, 1, 2, 3, 4, 9]}

我想将其写入 .csv 文件,如下所示:

k, 5, -2, 6, 7, 2, 4, 8
c, 6, 3, 1, 2, -3, 4, 9

我尝试了以下代码:

with open('file.csv', 'w') as f:
    for key in d.keys():
        f.write("%s,%s\n"%(key,d[key]))

不幸的是,这会产生以下结果:

k, [5, -2, 6, 7, 2, 4, 8]
c, [6, 3, 1, 2, -3, 4, 9]

我的解决方案是 运行 一个 trsed 命令,但必须有一种方法可以在第一次就正确地编写它,对吧?

d = {'k':[5, -2, 6, 7, 2, 4, 8], 'c':[6, 3, 1, 2, 3, 4, 9]}

with open('file.csv', 'w') as f:
    for key in d.keys():
        print(key, *d[key], sep=', ', file=f)

打印到文件:

k, 5, -2, 6, 7, 2, 4, 8
c, 6, 3, 1, 2, 3, 4, 9

我建议首先构建要写为 CSV 的列表:

>>> [[k] + v for k, v in d.items()]
[['k', 5, -2, 6, 7, 2, 4, 8], ['c', 6, 3, 1, 2, 3, 4, 9]]

从那里你的原始代码可以工作,但我也建议使用 csv.writer 而不是滚动你自己的格式:

import csv
with open('file.csv', 'w') as file:
    csv_writer = csv.writer(file)
    for row in [[k] + v for k, v in d.items()]:
        csv_writer.writerow(row)

您可以使用函数 join:

with open('file.csv', 'w') as f:
    for k, lst in dct.items():
        lst = ','.join(map(str, lst))
        f.write('%s,%s\n' % (k, lst))