aditmohan96
aditmohan96

Reputation: 161

finding the keys of all the largest values in python dictionary?

if I have a dictionary

x ={0: 0, 1: 4, 2: 0, 3: 2, 4: 2, 5: 4}

how do i get the keys of all the largest values

In this case they would be 1 and 5 .

Not a duplicate question. looking to find all the keys and not just the one.

Upvotes: 2

Views: 726

Answers (2)

Oleksii Filonenko
Oleksii Filonenko

Reputation: 1653

x ={0: 0, 1: 4, 2: 0, 3: 2, 4: 2, 5: 4}

maximum = max(x.values())
keys = [key for key, value in x.items() if value == maximum]
print(keys)  # => [1, 5]

Upvotes: 3

Mad Physicist
Mad Physicist

Reputation: 114290

There is a class in collections called Counter that does exactly what you want. It provides the exact functionality you require via it's most_common method:

from collections import counter
maxes = Counter(x).most_common(2)
print([x[0] for x in maxes])

[1, 5]

Now this is probably not exactly what you want because I hard coded in the number 2. You can get this by using another Counter on the values of your dictionary!

x = Counter(x) # This preserves x: just makes it a subclass of dict
max_count = Counter(x.values())[x.most_common(1)[0][1]]
maxes = x.most_common(max_count)
maxes = [x[0] for x in maxes]

Here, I compute the number of times that the most common value occurs by counting all the different values, and then checking the maximum one using x.most_common(1)[0][1].

Please do not select this answer. @BrightOne has the right answer. This is just a thing I did to see if I could avoid using anything but Counters. It is not actually a good idea.

Upvotes: 1

Related Questions