获取字典的键和值以获取字典的N个最大值

时间:2018-10-11 11:52:23

标签: python-3.x dictionary

我看过很多帖子,使用以下内容:

sorted(iterable, key=keyfunc, reverse=True)[0]

但是我如何获得关键和价值?

以上仅返回键。

我应该按下面的代码那样获取密钥并进行迭代,还是有一种更简单的方法呢?

topn_dict = sorted(similarity_dict, key=similarity_dict.get, reverse=True)[:5]
topn_pairs = {k: similarity[k] for k in topn_dict}
print (topn_pairs)

编辑:

similarity_dict = {a: 5.1, b: 4.99, c: 8.72, d: 6.34, e: 2.3, f: 9.1}

I would like the output as following for top 3:
f - 9.1
c - 8.72
d - 6.34

1 个答案:

答案 0 :(得分:1)

您可以直接对字典进行排序并重新创建:

topn_dict = dict(sorted(similarity.items(), key=lambda x: x[1], reverse=True))

没有明确的key(或key=lambda x: x[0]),它将根据键进行排序;上面的版本对值进行排序。

请注意,dict仅在python> = 3.?上排序。在旧版本中,dict不会进行排序。 (DeepSapce 更新:从python 3.7开始,您可以依靠它。)

对于您的示例,您可以使用:

topn_dict = dict(sorted(similarity_dict.items(), key=lambda x: x[1], 
                        reverse=True)[:5])
print(topn_dict)