将字典中的csv文件中的数据分组

时间:2015-03-07 16:37:28

标签: python csv dictionary

我目前有一个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文件中。

非常感谢。

2 个答案:

答案 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(),你就是金色的。