0

我有每个元素都是字典的列表。

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);

有没有更蟒蛇的方式来做到这一点?

4

3 回答 3

3

使用csv.DictWriterclass,它会直接为您编写值:

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)
于 2012-10-30T16:04:08.040 回答
1

您可以摆脱for循环并使用列表理解:

[",".join(str(v) for v in d.itervalues()) for d in myList]

请注意,由于字典是无序的,因此您无法预测返回不同值的顺序(这可能是一个严重的问题)。

于 2012-10-30T16:07:39.460 回答
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'])
于 2012-10-30T16:03:07.033 回答