关于python:如何将字典的值与未知键进行比较?

How to compare the values of a dictionary with unknown keys?

本问题已经有最佳答案,请猛点这里访问。

我是Python的初学者。我已经写了一个代码,在其中参赛者的名字和他们的分数将被存储在一本字典中。让我把这本词典叫做results。但是,我在编写代码时把它留空了。程序运行时,键和值将被添加到字典中。

1
2
3
4
5
6
7
8
results={}    
name=raw_input()
    #some lines of code to get the score#
results[name]=score
    #code#
name=raw_input()
    #some lines of code to get the score#
results[name]=score

在程序执行之后,我们假设results == {"john":22,"max":20}

我想比较约翰和马克斯的得分,并宣布得分最高的人为获胜者。但在节目开始时,我不知道参赛者的名字。那么,我如何比较得分,并宣布其中一个为获胜者呢?


您可以这样做,以获得优胜者:

1
max(results, key=results.get)

下面是一个实现您想要的功能的工作示例,它基本上是从字典中获取最大的项目。在这个示例中,您还将看到其他gem,比如生成确定性随机值,而不是手动插入它们并获取最小值,如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import random
import operator

results = {}

names = ["Abigail","Douglas","Henry","John","Quincy","Samuel",
        "Scott","Jane","Joseph","Theodor","Alfred","Aeschylus"]

random.seed(1)
for name in names:
    results[name] = 18 + int(random.random() * 60)

sorted_results = sorted(results.items(), key=operator.itemgetter(1))

print"This is your input", results
print"This is your sorted input", sorted_results
print"The oldest guy is", sorted_results[-1]
print"The youngest guy is", sorted_results[0]


你可以做到:

1
2
3
4
import operator
stats = {'john':22, 'max':20}
maxKey = max(stats.items(), key=operator.itemgetter(1))[0]
print(maxKey,stats[maxKey])

您还可以通过以下方式整体获取max tuple:

1
maxTuple = max(stats.items(), key=lambda x: x[1])

希望它有帮助!