编写一个不带括号的列表的字典值
Posted
技术标签:
【中文标题】编写一个不带括号的列表的字典值【英文标题】:writing a dictionary value that is a list without brackets 【发布时间】:2020-09-09 18:56:24 【问题描述】:我有一本字典,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]
我的解决方案是在之后运行tr
或sed
命令,但必须有一种方法可以先正确编写它,对吧?
提前致谢!
【问题讨论】:
【参考方案1】: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
【讨论】:
这就像一个魅力!我不知道你可以像这样使用print()
命令。【参考方案2】:
我建议首先构建您想要以 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)
【讨论】:
赞成。绝对使用csv
模块是正确的方式
也很好用!这是我比较熟悉的一个。我不知道为什么我一开始不使用 CSV。【参考方案3】:
可以使用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))
【讨论】:
以上是关于编写一个不带括号的列表的字典值的主要内容,如果未能解决你的问题,请参考以下文章