从Python字典中获取值的关键字

时间:2018-06-10 13:31:20

标签: python python-3.x dictionary

我有一本看起来像这样的字典。

    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。

请帮忙。

2 个答案:

答案 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