Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python CSV到目录_Python_Csv - Fatal编程技术网

Python CSV到目录

Python CSV到目录,python,csv,Python,Csv,我有一个CSV文件,其中包含有关 汽车和电子邮件 BMW, person1@mail.com Mercedes, person2@mail.com Dodge, person1@mail.com 等等 我正试图做的脚本,使一个字典从CSV的电子邮件是关键和汽车是价值。每个键都可以有更多的值 import csv reader = csv.reader(open('report.csv')) output = {} for row in reader: key = row[1] value

我有一个CSV文件,其中包含有关 汽车和电子邮件

BMW, person1@mail.com
Mercedes, person2@mail.com
Dodge, person1@mail.com
等等

我正试图做的脚本,使一个字典从CSV的电子邮件是关键和汽车是价值。每个键都可以有更多的值

import csv

reader = csv.reader(open('report.csv'))

output = {}
for row in reader:
key = row[1]
value = row[0]
if key in output:
    if row[0] == output.get(key):
        pass
    else:
        output[key].append(value)
output[key] = value

print(output)
对于每一行,我都要检查emailkey的carvalue值是否已经存在。如果是,则传递到下一行,如果不是,则向键添加值

输出应该是

{'person1@mail.com': ['BMW', 'Dodge'],'person2@mail.com': ['Mercedes']}
但编译后出现错误“str”对象没有属性“append”


谢谢

好吧,您正在尝试将字符串附加到输出[key].appendvalue中的字符串。其中输出[key]本身就是一个字符串

使用列表将值添加为[value],以便可以追加

import csv

reader = csv.reader(open('report.csv'))

output = {}
for row in reader:
    key = row[1]
    value = row[0]
    print key, value

    if key not in output:
        output[key] = [value]

    else:
        output[key].append(value)

print(output)

# output
# {' person2@mail.com': ['Mercedes'], ' person1@mail.com': ['BMW', 'Dodge']}
使用该模块,您可以使用defaultdict对象来实现所需的输出

import csv 
from collections import defaultdict

d =defaultdict(list)

with open("t.csv","rb") as f:
    reader = csv.reader(f)
    for line in reader:
        d[line[1]].append(line[0])
产出:

d

defaultdict(list,
            {' person1@mail.com': ['BMW', 'Dodge'],
             ' person2@mail.com': ['Mercedes']})

想想错误的文本,你试图附加到哪个对象,以及你是如何创建这个对象的。我想你知道输出[key]是什么,它不是列表。提示:你的字典值是字符串还是数组?应该是什么?工作!谢谢你的提示: