在字典中查找最小值

时间:2015-12-13 08:52:19

标签: python dictionary

我有一本成绩词典。当我要求最小值时,它给出了最大值。我使用function [predictY] = logisticRegressionClassify(testX, testY, w) temp = arrayfun(@(x) x/(1+x), exp(testX * w)); [~, predictY] = max(temp, [], 2); 来找到最小值,但它是我最大的然后我找到min(Grades)并且它有效但我不明白为什么min(Grades)不起作用。我也不知道min(Grades.items(), key=lambda x:x[1])是如何工作的以及它意味着什么。

min(Grades.items(), key=lambda x: x[1])

3 个答案:

答案 0 :(得分:2)

迭代字典产生键,而不是(键,值)对。

>>> d = {'pr': [17, 15], 'hw': [16, 27, 25], 'ex': [83, 93], 'qz': [8, 10, 5]}
>>> list(d)
['pr', 'qz', 'hw', 'ex']

>>> min(_)
'ex'
字典上的

min返回最大的键(按字典顺序排列)。

min(Grades.items(), key=lambda x: x[1])

的含义

min接受可选的key参数。 key函数的返回值用于比较项目的顺序,而不是原始值。

x的参数lambda是传递给函数的每个项目。 ('pr', [17, 15])('hw', [16, 27, 25]),...;因此,比较元组中的第二项(x[1])而不是元组。

答案 1 :(得分:0)

您还可以使用key找到min dictionary comprehension的{​​{1}}

d = {k for k,v in grades.items() if v == min(grades.values())}

输出:

set(['qz'])

答案 2 :(得分:0)

试试这个。

minScore = 100
lowInitial = ""
grades = {'pr': [17, 15], 'hw': [16, 27, 25], 'ex': [83, 93], 'qz': [8, 10, 5]}
for initials, scores in grades.items():
    lowestScore = min(scores)
    if lowestScore < minScore:
        minScore = lowestScore
        lowInitial = initials
print("Person with lowest score is: " + lowInitial)
print("Lowest score was: " + str(minScore))

Person with lowest score is: qz
Lowest score was: 5