我有一本成绩词典。当我要求最小值时,它给出了最大值。我使用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])
答案 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