Python打印多个(相同)值

2024-07-08 11:37:00 发布

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

我有个问题:

scores = {}
with open('score.txt', 'r') as f:

    for line in f:

        name, score = line.strip().rsplit(' ', 1)

        score = int(score)

        if name in scores:scores[name] = scores[name] + score

        else:scores[name] = score

sortedScoresByMax = max(scores.items(), key = lambda t: t[1])
print (sortedScoresByMax)

那个分数.txt包含多个带有分数的名称。现在程序只打印出得分最高的一个人。但如果有些名字有相同的分数,我需要程序打印出来所有的。我想我必须使用一个循环,但我不能让它工作。你知道吗


Tags: namein程序txtforaswithline
3条回答

您可以找到最大值,然后打印所有具有该分数的玩家:

maxscore = max(scores.values())
print [(p, s) for p, s in scores.items() if s == maxscore]

如果知道最大值,可以通过迭代dict对象scores来获得它。你知道吗

maximum = max(scores.values())
for key in scores:
    if scores[key] == maximum:
        print key, scores[key]

只需一次口述:

maxscore=0
maxscorers = []
for name, score in scores.items():
  if score > maxscore:
    maxscore = score
    maxscorers = [name]
  elif score = maxscore:
    maxscorers.append(name)

我不确定这是否是非常python,但我更喜欢它比首先确定最大值,然后过滤列表。你知道吗

相关问题 更多 >

    热门问题