【问题标题】:How to create a special dictionary with multiple values under one key?如何在一个键下创建具有多个值的特殊字典?
【发布时间】:2019-09-07 19:22:13
【问题描述】:
school = [['dia', 87], ['ria', 100], ['gud', 59], ['ria', 85], ['gud', 76], ['don', 99]]

这个数组包含学生和他们的分数(是的,有一些重复的学生有差异值)。

我想把它转换成这个字典来找到平均分:

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

如果有人可以帮我解决这个问题,请告诉我。

【问题讨论】:

标签: python dictionary


【解决方案1】:
res = {}
for x in school:
    res.setdefault(x[0],[]).append(x[1])
print(res)      

输出

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

【讨论】:

    【解决方案2】:

    从性能的角度来看,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 进行与性能相关的讨论。

    【讨论】:

    • 非常感谢 SagarGuptaFTW。真的很感激
    • @ChirantanSaha 没问题。如果有帮助,您可以接受答案。
    猜你喜欢
    • 2019-10-30
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    • 1970-01-01
    • 2021-03-04
    • 2012-10-30
    • 1970-01-01
    • 2021-12-04
    相关资源
    最近更新 更多