【发布时间】:2015-07-25 23:56:19
【问题描述】:
我有一本包含列表的字典;键基于每个列表中的第一项。使用有趣的随机数据集,构建字典如下:
import collections
rand_ls = [["A","bb","cc"],["B","dd","ee"],["A","ff","gg"],["B","hh","ii"]]
d = collections.defaultdict(list)
for item in rand_ls:
d[item[0]].append(item)
print(dict(d))
# {'A': [['A', 'bb', 'cc'], ['A', 'ff', 'gg']], 'B': [['B', 'dd', 'ee'], ['B', 'hh', 'ii']]}
我想将每个键中保存的列表写入单独的 .csv 文件,每个键一个。我找到的最接近的解决方案是详细的here,但我无法让它工作。我追求的格式:
letterA.csv
A bb cc
A ff gg
letterB.csv
B dd ee
B hh ii
注意:letter{}.csv 是每个键的唯一文件;每个列表(在每个键中)都位于单独的行中,并且列表中的每个项目都由制表符分隔。
我的代码是这样的:
for key,lists in d.items():
with open("letter{}.csv".format(key), "w") as f:
f.writelines(lists, delimiter='\t')
它不断抛出错误:“TypeError: writelines() 没有关键字参数”。我做了一些阅读,我知道 writelines() 需要一个字符串序列,所以不太确定缺少什么。
根据我在其他地方读到的内容,代码 open("letter{}.csv".format(key), "w") 应该为每个键创建一个唯一的文件,并且后续行应将列表写入适当的文件。
【问题讨论】:
-
我猜
writelines()方法期待的是字符串而不是列表,为了将列表转换为字符串,您可以使用"\t".join(lst)
标签: python list csv dictionary