我想减少词典中的项目数量。所以我需要在按值排序后修剪字典。我的问题是怎么样?
所以我修剪这个字典,所以只保留了前两个条目 -
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}
有效地仅保留前两个元素并丢弃其余元素。
答案 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}