最高n值的
我一直被这件事困扰着。我有两个清单
lista = ["a", "b", "c", "d"]
listb = [80, 90, 70, 60]
我想把它画成这样"a"的值为80"b"的值为90"c"的值为70,并且"d"的值为60然后,我想打印具有最大值和第二大值的字符串。
有办法做到这一点吗?
你可以做一些类似的事情
print(lista[listb.index(max(listb))])
它找到listb
的最大数字索引,然后得到lista
中相同索引的项。
这应该是可行的,但是我建议将来在这种事情上使用python dicts。
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'
最高n值的heapq
如果您想要最高的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')
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]
告诉我这是否有效
试试这个:
keys = ['a', 'b', 'c', 'd']
values = [80, 90, 70, 60]
print keys[values.index(max(values))]