我目前有一个csv文件,其中包含用户的名字及其在测验中的分数(满分10分)。 csv文件如下所示:
Ben,8
Tim,9
Tim,10
Ben,10
Ben,9
Tim,7
我想将数据分组到一个词典中,这样用户的名字只输入一次,这样它就可以在测验中保存所有用户的分数(据我所知)在csv文件中是不可能的。)字典应如下所示:
scores = {'Ben': [8, 10, 9], 'Tim': [9, 10, 7], etc...}
如何以这种方式将csv文件中的数据分组到字典中?
我尝试过搜索密钥,例如'奔'然而,在字典中,它只会返回最近的分数“Ben'在CSV文件中。
非常感谢。
答案 0 :(得分:3)
使用defaultdict查看以下示例:
from collections import defaultdict
d = defaultdict(list)
with open('data.csv') as data:
for line in data:
name, score = line.strip("\n").split(',')
d[name].append(int(score))
print d
输出:
defaultdict(<type 'list'>, {'Tim': [9, 10, 7], 'Ben': [8, 10, 9]})
答案 1 :(得分:0)
以下是一个例子:
sc_txt='''\
Ben,8
Tim,9
Tim,10
Ben,10
Ben,9
Tim,7'''
import csv
scores={}
for line in csv.reader(sc_txt.splitlines()):
scores.setdefault(line[0], []).append(line[1])
print scores
# {'Tim': ['9', '10', '7'], 'Ben': ['8', '10', '9']}
只需用打开的文件对象替换sc_txt.splitlines()
,你就是金色的。