在字典中查找最大值的基本方法

时间:2015-04-14 00:42:40

标签: python dictionary max

假设我有一本字典。我想找到具有最高值的4个键。我想以一种非常基本的方式做到这一点。我不是那么先进的CS。我只想迭代字典。或者我该怎么做?我意识到这不是那么具有挑战性。我不想使用heapq。我怎样才能做到这一点?

4 个答案:

答案 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],这是最后四个相反顺序的条目。