Найти ключ максимальных значений максимального ключа в словаре в случае дублирования значений - PullRequest
0 голосов
/ 09 сентября 2018

В Python я хочу найти максимальное значение из словаря, в котором есть дубликаты, например:

my_dict = {1: 0, 12: 2, 36: 2, 24: 2, 33: 2, 4: 1}

и максимальное значение 2.

И я хочу найти максимальный ключ максимального значения, которое в этом примере равно 36:2.

Ответы [ 4 ]

0 голосов
/ 09 сентября 2018

Вот пример примера:

my_dict = {1: 0, 12: 2, 36: 2, 24: 2, 33: 2, 4: 1}
maxValue = []
maximum = 0
maxKey = 0
maxKeys = []

for key, value in my_dict.items():
     if value >= maximum:
          maxValue.append(value)


number = max(maxValue)

for key, value in my_dict.items():
    if key > maxKey:
         maxKeys.append(key)

number_1 = max(maxKeys)

print('{}: {}'.format(number_1, number))

А вот ваш вывод:

36: 2

Мы можем по существу перебирать каждое значение и каждый ключ и добавлять их в список и находить максимальное значение. Затем мы можем сделать оператор print, используя метод .format (), который будет печатать результаты.

0 голосов
/ 09 сентября 2018

Вы можете вызвать max для элементов словаря с пользовательским порядком, который принимает значение первым, а ключ вторым:

max(my_dict.items(), key=lambda i : (i[1], i[0]))
0 голосов
/ 09 сентября 2018

Предполагая, что все ваши ключи являются положительными целыми числами.

Тогда сложность этого вопроса двояка, сначала нам нужно найти максимальные значения, затем мы можем связать его с ключом максимума.

Я бы сделал что-то вроде этого:

max_key = -1
max_val = -1
for key, val in my_dict.items():
    if int(val) >= max_val:
        max_val = int(val)
        if int(key) > max_key:
            max_key = int(key)
 print("Max value: {}\nMax key: {}".format(max_val, max_key)

Это должно сделать это.

EDIT

Использование встроенной функции max, вероятно, работает лучше, этот код в основном копирует то, что делает Макс более или менее.

0 голосов
/ 09 сентября 2018

Вы можете подавать предметы дикта во встроенную функцию max.

>>> max(my_dict.items(), key=lambda t: (t[1], t[0]))
(36, 2)

Функция ключа указывает, что значение (второй элемент элемента) должно рассматриваться первым. Если во время сравнения двух пар (ключ, значение) значения совпадают, проверяется ключ (первый элемент элемента).

редактировать:

в качестве альтернативы, может быть, немного пижон:

>>> max(my_dict.items(), key=lambda t: t[::-1])
(36, 2)
...