如何使字典根据键的值之和返回键?

2024-05-08 20:38:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一份清单:

 [['Tameka', '3.5'], ['Esmeralda', '3.9'], ['Katy', '2.7'], ['Lakisha', '3.4'], ['Edwina', '3.0'], ['Darren', '2.9'], ['Rosalinda', '2.8'], ['Margery', '3.1'], ['Kathrine', '3.9'], ['Julio', '4.0'], ['Esmeralda', '4.0'], ['Katy', '3.8'], ['Edwina', '3.2'], ['Darren', '3.8'], ['Rosalinda', '2.9'], ['Margery', '3.2'], ['Kathrine', '3.4'], ['Tameka', '3.6'], ['Julio', '2.0'], ['Katy', '3.0'], ['Lakisha', '4.0'], ['Edwina', '3.7'], ['Darren', '3.7'], ['Rosalinda', '3.8'], ['Margery', '3.5'], ['Kathrine', '2.9'], ['Julio', '3.8'], ['Katy', '4.0'], ['Edwina', '3.6'], ['Darren', '3.8'], ['Rosalinda', '3.7'], ['Margery', '3.9']]

我试着让重复的键对它们的值求和,然后像这样返回:

'Tameka', 'Julio', 'Esmeralda', 'Katy', 'Lakisha', 'Edwina', 'Darren', 'Rosalinda', 'Margery', 'Kathrine'

我被困在这个问题上有一段时间了,我不知道我做错了什么

def dictGpa(cleanList):
    diction = {}
    for item in cleanList:
        if item in diction:
            diction[item] = diction[item.value()]+diction[item.value()]
        else:
            diction[item] = diction[item]

Tags: invalueitemdictioncleanlistmargerydarrenkaty
2条回答

我认为使用defaultdict会更干净:

from collections import defaultdict

mydict = defaultdict(lambda: 0)

for x in cleanList:
    mydict[x[0]] += float(x[1])

你有一张单子,不是单子。所以,使用item.value()是错误的。键应该是item[0],值应该是item[1]

def dictGpa(cleanList):
        diction = {}
        for item in cleanList:
            if item[0] in diction:
                diction[item[0]] += float(item[1])
            else:
                diction[item[0]]  = float(item[1])

然后在diction中,您将拥有一个dict,其中每个名称都有其最终的和

相关问题 更多 >