假设我有一本字典。我想找到具有最高值的4个键。我想以一种非常基本的方式做到这一点。我不是那么先进的CS。我只想迭代字典。或者我该怎么做?我意识到这不是那么具有挑战性。我不想使用heapq。我怎样才能做到这一点?
答案 0 :(得分:3)
我认为最pythonic的方式是:
sorted(d, key=d.get, reverse=True)[:4]
答案 1 :(得分:1)
您应该使用collections.Counter
对象。
c = collections.Counter(original_dict)
c.most_common(4)
如果你只想要钥匙,那么:
[k for k, v in c.most_common(4)]
有关如何实施的参考,请查看源代码here。
答案 2 :(得分:0)
按值排序然后切片。 sorted
函数具有关键功能。
items_by_value = sorted(d.items(), key=lambda (k, v): v)
keys = [k for k, v in items_by_value[-4:]]
答案 3 :(得分:0)
好问题。
假设d
是字典,如果您不关心密钥的顺序,可以使用以下内容:
keys = [v[0] for v in sorted(d.items(), key=lambda v: v[1])[-4:]]
对于庞大的词典,使用起来会更有效:
keys = [v[0] for v in sorted(d.items(), key=operator.itemgetter(1))[-4:]]
[-4:]
表示最后四个条目。在这两种情况下,如果您希望密钥的顺序与其对应的最高值相同,请改用[-1:-5:-1]
,这是最后四个相反顺序的条目。