Python最大值

2024-10-03 02:41:22 发布

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

我对python的max()函数有一个问题。 我的情况是:

results = {'left' : leftKeyCounter, 'right' : rightKeyCounter, 'front' : frontKeyCounter, 'back' : backKeyCounter}

finalScore = max(results, key=results.get)

print(finalScore, 'wins')

我要解决的问题是我的结果会发生什么。比如说,我有

^{pr2}$

事实上,他会返回'正面胜利'这是完全随机的,我需要过滤的结果。(或之前?) 所以如果这是两个最高结果之间的平局,他会取消它(例如)

最简单的方法是什么?我看了看“计数器”,但这并没有达到我在这里打算做的,因为我的数字已经打包好了,我只需要比较4个值,而没有任何2个最高值之间的联系。在

非常感谢!:-)


Tags: key函数rightgetback情况leftresults
1条回答
网友
1楼 · 发布于 2024-10-03 02:41:22

你只要把字典翻一遍就可以得出正确的结果。用值反转键,并跟踪最高分数。如果有多个项目的最高分数,您可以返回一个自定义消息。在

在反转中,不能简单地执行{value: key for key, value in results.items()},因为如果两个值相同,它们将覆盖前一个值。所以你必须把结果保存在一个列表中。给切普纳的积分是scores.setdefault()。他还建议用^{}也可以达到同样的效果。在

def calculate_winner(d):
    scores = {}
    high_score = 0
    for key, value in d.items():
        scores.setdefault(value, []).append(key)
        if value > high_score:
            high_score = value
    results = scores[high_score]
    if len(results) == 1:
        return results[0]
    else:
        return 'TIE', results

示例:

^{pr2}$

编辑:如果你有一个小字典,你可以用更少的代码行来获得同样的结果:一次是找出最高分数,另一次是筛选出赢家。在

def calcaluate_winner(d):
    max_value = max(d.values())
    winners = [key for key in d if d[key] == max_value]
    if len(winners) == 1:
        return winners[0]
    else:
        return 'TIE', winners

相关问题 更多 >