如何映射字符串列表和整数列表,并找到具有最大值的字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何映射字符串列表和整数列表,并找到具有最大值的字符串相关的知识,希望对你有一定的参考价值。

我遇到了麻烦。我有两个清单

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

我想映射它,因此“a”的值为80“b”的值为90“c”的值为70,“d”的值为60然后,我想要打印出具有该值的字符串最大值和第二大值。

有没有办法做到这一点?

答案

max for highest value only

对于您的结果,您不需要显式映射,例如通过字典。您可以计算最高值的索引,然后将其应用于您的密钥列表:

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 for highest n values

如果您想要最高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')
另一答案

你可以做点什么

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

它找到listb的最大数字索引,然后获取lista中相同索引的项目。

这应该工作,但我建议将来使用python dicts这类事情。

另一答案
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))]

以上是关于如何映射字符串列表和整数列表,并找到具有最大值的字符串的主要内容,如果未能解决你的问题,请参考以下文章

dart - 如何从Dart中的列表中找到最小值和最大值

在Haskell中,如何创建具有多种类型的列表?

Bash - 从整数列表中获取最大值

最大子阵列和

如何在Python中将字符映射到整数范围[-128,127]?

如何在绑定数字的列表中找到最大数字