如何在一个键下创建具有多个值的特殊字典?

时间:2019-09-07 10:33:41

标签: python dictionary

school = [['dia', 87], ['ria', 100], ['gud', 59], ['ria', 85], ['gud', 76], ['don', 99]]

此数组包含学生及其分数(是的,有些重复的学生具有diff值)。

我想将其转换为该词典以查找平均得分:

school_dict = { dia:[87], ria:[100,85], gud:[59,76], don:[99] }

让我知道是否有人可以为我解决这个问题。

2 个答案:

答案 0 :(得分:2)

res = {}
for x in school:
    res.setdefault(x[0],[]).append(x[1])
print(res)      

输出

{'dia': [87], 'ria': [100, 85], 'gud': [59, 76], 'don': [99]}

答案 1 :(得分:1)

从性能的角度来看,defaultdict比dict.setdefault()快,因此您也可以使用它:

from collections import defaultdict
school = [['dia', 87], ['ria', 100], ['gud', 59], ['ria', 85], ['gud', 76], ['don', 99]]
d = defaultdict(list)
for s in school:
    d[s[0]].append(s[1])
print(dict(d))

输出:

  

{'dia':[87],'ria':[100,85],'gud':[59,76],'don':[99]}

请遵循以下步骤:setdefault vs defaultdict performance用于与性能相关的讨论。