我有列表,其中每个元素都是字典。
myList = [
{mykey1:myValue1, myKey2:myValue2},
{myKey1:myValue1b, myKey2:myValue2b}
]
我想要一个只包含每个条目值的CSV文件。为此,我需要一个列表,其中每个元素都是逗号分隔值的字符串。所以它的形式如下:
myValuesOnlyList=[ "myValue1, myValue2",
"myValue1b, myValue2b"]
为此,我做了类似的事情:
for mydict in myList:
row = ','.join(str(e) for e in mydict.values());
myValuesOnlyList.append(row);
有更多的pythonic方式吗?
答案 0 :(得分:3)
使用csv.DictWriter
class,它会直接为您编写值:
fields = ('mykey1', 'mykey2', ...)
with open('output.csv', 'wb') as f:
writer = csv.DictWriter(f, fields)
writer.writerow({f: f for f in fields}) # write a header row
for entry in myList:
write.writerow(entry)
答案 1 :(得分:1)
你可以摆脱for
循环并使用列表理解:
[",".join(str(v) for v in d.itervalues()) for d in myList]
请注意,由于字典是无序的,您无法预测返回不同值的顺序(这可能是一个严重的问题)。
答案 2 :(得分:0)
您可以使用csv模块。
import csv
with open('eggs.csv', 'wb') as csvfile:
spamwriter = csv.writer(csvfile, delimiter=' ',
quotechar='|', quoting=csv.QUOTE_MINIMAL)
spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])