我有一本看起来像这样的字典。
CV Scores
0 2 0.966667
1 3 0.979984
2 4 0.979701
3 5 0.980000
4 6 0.979938
5 7 0.973639
6 8 0.973214
7 9 0.986420
8 10 0.973333
9 11 0.974242
10 12 0.973611
11 13 0.974359
12 14 0.974206
我想提取最大分数值的CV值。
所以,在这种情况下,最大分数值是0.986,我想打印CV值为9。
请帮忙。
答案 0 :(得分:0)
您可以像首先按字词按值对字典进行排序,然后打印最后一个元素的键。
import operator
dictionary={2:0.966667,3:0.979984,9:0.986420, 8:0.973214,}
l=sorted(dictionary.items(),key=operator.itemgetter(1))
#it will return the list of tuples sorted by value (as 1 pass as an argument of itemgetter u can pass 0 for sort by key)
print(l[-1][0]) #print the key of last index
答案 1 :(得分:-1)
根据您的输入,您似乎拥有Pandas数据帧。如果是这种情况,您可以使用pd.DataFrame.iloc
。请注意,这将比基于字典的方法更有效,因为Pandas将数字数据保存在连续的内存块中。给定数据框df
:
import pandas as pd
# only one max value exists
res = df['CV'].iloc[df['Scores'].idxmax()] # 9
# for multiple max values
res = df.loc[df['Scores'] == df['Scores'].max(), 'CV']
如果您确实拥有字典,则可以通过heapq
有效地计算最高分数。然后使用带next
的生成器表达式来提取相关键。给定字典d
:
import heapq
val = heapq.nlargest(1, d.values())[0]
res = next(k for k, v in d.items() if v == val) # 9