我有一个词典列表。例如
l = [{'date': '2014-01-01', 'spent': '$3'},[{'date': '2014-01-02', 'spent': '$5'}]
我想制作这样的csv,如果我想将它保存为csv我可以。
我有其他获取列表并调用splitlines()所以我可以使用csv方法。
例如:
reader = csv.reader(resp.read().splitlines(), delimiter=',')
如何将我的词典列表更改为类似csv文件的列表?
我一直在尝试将字典转换成字符串,但是没有多少运气。它应该像
"date", "spent"
"2014-01-01", "$3"
"2014-01-02", "$5"
这也将帮助我以一种很好的方式为用户打印出词典列表。
更新
这是我的功能,它让我想要一个dicts列表:
def get_daily_sum(resp):
rev = ['revenue', 'estRevenue']
reader = csv.reader(resp.read().splitlines(), delimiter=',')
first = reader.next()
for i, val in enumerate(first):
if val in rev:
place = i
break
else:
place = None
if place:
total = sum(float(r[place]) for r in reader)
else:
total = 'Not available'
return total
所以我想从列名列表中总计一列。问题在于"收入"专栏并不总是在同一个地方。
有更好的方法吗?我有一个对象返回类似字符串的csv,另一个返回一个dicts列表。
答案 0 :(得分:2)
您可能希望使用csv.DictWriter
来编写文件。
with open('outputfile.csv', 'wb') as fout:
writer = csv.DictWriter(fout, ['date', 'spent'])
for dct in lst_of_dict:
writer.writerow(dct)
答案 1 :(得分:1)
使用列表推导的解决方案应适用于任意数量的密钥,但前提是所有的密钥都具有相同的密钥。
l = [[d[key] for key in dicts[0].keys()] for d in dicts]
附加列标题的键名称:
l = dicts[0].keys() + l
这将返回可以导出到csv的列表列表:
import csv
myfile = csv.writer(open("data.csv", "wb"))
myfile.writerows(l)