Как отобразить список строк и список целых чисел и найти строку, которая имеет наибольшее значение - PullRequest
0 голосов
/ 14 ноября 2018

У меня были проблемы с этим. У меня есть два списка

lista = ["a", "b", "c", "d"]
listb = [80, 90, 70, 60]

Я хочу отобразить это так «а» имеет значение 80 «б» имеет значение 90 «с» имеет значение 70 и «d» имеет значение 60 Затем я хочу напечатать строку с наибольшим значением и вторым по величине значением.

Есть ли способ сделать это?

Ответы [ 4 ]

0 голосов
/ 14 ноября 2018

Попробуйте это:

keys = ['a', 'b', 'c', 'd']
values = [80, 90, 70, 60]
print keys[values.index(max(values))]
0 голосов
/ 14 ноября 2018

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')
0 голосов
/ 14 ноября 2018

Вы можете сделать что-то вроде

print(lista[listb.index(max(listb))])

Он находит индекс максимального числа listb, затем получает элемент с тем же индексом в lista.

Это должно работатьОднако в будущем я рекомендую использовать Python dicts для такого рода вещей.

0 голосов
/ 14 ноября 2018
keys = ['a', 'b', 'c', 'd']
values = [80, 90, 70, 60]
dictionary = dict(zip(keys, values))
print(dictionary)
{'a': 80, 'b': 90, 'c': 70, 'd': 60}

Полагаю, вы можете попробовать использовать operator.itemgetter:

import operator
max(dictionary.iteritems(), key=operator.itemgetter(1))[0]

Скажите, сработало ли это

...