max
только для самого высокого значения
Для вашего результата не нужно явное отображение, например, через словарь.Вы можете вычислить индекс наивысшего значения и затем применить его к своему списку ключей:
lista = ["a", "b", "c", "d"]
listb = [80, 90, 70, 60]
# a couple of alternatives to extract index with maximum value
idx = max(range(len(listb)), key=lambda x: listb[x]) # 1
idx, _ = max(enumerate(listb), key=lambda x: x[1]) # 1
maxkey = lista[idx] # 'b'
heapq
для наибольших n значений
Если вы хотите получить самые высокие значения n , полная сортировка не требуется.Вы можете использовать heapq.nlargest
:
from heapq import nlargest
from operator import itemgetter
n = 2
# a couple of alternatives to extract index with n highest values
idx = nlargest(n, range(len(listb)), key=lambda x: listb[x]) # [1, 0]
idx, _ = zip(*nlargest(n, enumerate(listb), key=lambda x: x[1])) # (1, 0)
maxkeys = itemgetter(*idx)(lista) # ('b', 'a')