排序后修剪字典的最佳方法是什么?

时间:2018-05-15 05:52:56

标签: python sorting dictionary

我想减少词典中的项目数量。所以我需要在按值排序后修剪字典。我的问题是怎么样?

所以我修剪这个字典,所以只保留了前两个条目 -

base_dic={'Cs':0,5, 'Cp':0.3, 'Os':0.6, 'Op': 0.9}

我已经尝试过了 -

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

但这是最好的方法吗?要显示或比较字典中的值,是否有按价值排序的智能方法?请注意,不只是对值进行排序,而是使用值对字典进行排序。

我想只有少数具有最大值的元素。也就是说,来自

base={'Cs':0,5, 'Cp':0.3, 'Os':0.6, 'Op': 0.9, .... 100 elements}  

base={'Op': 0.99, 'Nid': 0.97}

有效地仅保留前两个元素并丢弃其余元素。

2 个答案:

答案 0 :(得分:1)

你建议的方式肯定是pythonic。我能看到的唯一问题是你只需要两个最大的元素,但仍然必须对dict中的所有元组进行排序:这可以通过heapq.nlargest

更有效地完成
values = dict(heapq.nlargest(2, mydict.items(), lambda i: i[1]))

答案 1 :(得分:1)

是的,这或多或少是最明显的做法。您可以使用base_dic.get来消除lambda以获得更清晰的解决方案。

keys = sorted(base_dic.keys(), key=base_dic.get, reverse=True)[:2]
trim_dict = {k : base_dic[k] for k in keys}