在python中添加字典值

2024-04-19 15:52:26 发布

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

我想加上个别球员的得分,并希望显示该球员得分最多的运行。这是我指的词典的例子:

{'match1': {'player1': 57, 'player2': 38},
 'match2': {'player3': 9, 'player1': 42},
 'match3': {'player2': 41, 'player4': 63, 'player3': 91}}

我尝试了许多解决方案,但无法建立一个逻辑,这样它将添加来自不同比赛的个别球员的得分。任何帮助都是值得赞赏的。提前谢谢。你知道吗


Tags: 逻辑解决方案例子词典球员player2player1match1
3条回答

在嵌套的dictionary上迭代,并将分数相加到玩家总数的字典中。你知道吗

def find_totals(d):
    total = {}
    for match, results in d.items():
        for player, score in results.items():
            total[player] = total.get(player, 0) + score
    return total

样本输出

>>> d = {'match1':{'player1':57, 'player2':38}, 'match2':{'player3':9, 'player1':42}, 'match3':{'player2':41, 'player4':63, 'player3':91}}
>>> print find_totals(d)
{'player2': 79, 'player3': 100, 'player1': 99, 'player4': 63}

这是解决你问题的办法

d = {'match1':{'player1':57, 'player2':38}, 'match2':{'player3':9, 'player1':42}, 'match3':{'player2':41, 'player4':63, 'player3':91}}
players = {}
for key, val in enumerate(d):
    #print val
    for ele,value in enumerate(d[val]):
        #print value
        if value not in players:
            players[value] = d[val][value]
        else:
            players[value] += d[val][value]

print players
highest = 0
highest_player = ""
for key, value in enumerate(players):
    if players[value]>highest:
        highest = players[value]
        highest_player = highest_player.replace(highest_player, value)
print highest_player,players[highest_player]

希望这对你有帮助。你知道吗

def score(match):
    players = {}
    for key in match:
        for player in match[key]:
            if player not in players:
                players[player] =match[key][player]
            else:
                players[player]+=match[key][player]
    return players

快速概述,如果玩家不在新字典中,创建成员资格并将密钥指向该玩家的分数。否则把分数加到那个运动员的总数上

相关问题 更多 >