繁体   English   中英

如何在包含 Python 中的整数和字符串的列表中找到最大的 integer 的索引?

[英]How do I find find the index of the greatest integer in a list that contains integers and strings in Python?

这就是列表的样子

incomes = ['Kozlowski', 52000, 'Kasprzak', 51000, 'Kowalski', 26000]

我想打印最大的收入和那个收入的人的姓氏(收入指数 - 1)

你可以试试这个:

index_of_highest_salary = incomes.index(np.max(incomes[1::2]))

您可以根据数据创建dict ,然后使用max来查找对应值最大的键。

>>> incomes = ['Kozlowski', 52000, 'Kasprzak', 51000, 'Kowalski', 26000]
>>> data = dict(zip(incomes[::2], incomes[1::2]))
>>> data
{'Kozlowski': 52000, 'Kasprzak': 51000, 'Kowalski': 26000}
>>> max(data.items(), key=lambda i: i[1])
('Kozlowski', 52000)

然后你不需要索引,数据更有条理。

如果您的模式是["SURNAME_1", INCOME_1, "SURNAME_2", INCOME_2, ... ] ,那么您可以这样做:

prices = incomes[1::2] # This will return all integers
names  = incomes[::2]  # This will return all surnames

max_price = max(prices)
max_price_index = prices.index(max_price)
person = names[max_price_index]

但你真的应该把它改成字典,因为它更容易使用,而且效率更高

您的标题问题与您要问的不同,所以这里是您标题的答案:如果您不想使用其他库,如 numpy,您可以这样做:

index = 0
max_n = None
for i in range(len(incomes)):
   element = incomes[i]
   if type(element) == int or type(element) == float:
     if max_n is None or element > max_n:
       max_n = element
       index = i

index将保存列表中最大数量的索引。

此答案假设您需要问题标题中所述的条目索引。

使用enumerate创建结合了索引和值的数据。

incomes = ['Kozlowski', 52000, 'Kasprzak', 51000, 'Kowalski', 26000]
print(list(enumerate(incomes[1::2])))

这会给你[(0, 52000), (1, 51000), (2, 126000)]

我们现在可以将此数据提供给max并使用键 function 为我们提供每个元组的第二个条目。 当我们得到这个元组时,我们可以从元组的第一个条目中得到索引。 由于我们省略了每个第二个元素(名称),因此该索引必须乘以2

incomes = ['Kozlowski', 52000, 'Kasprzak', 51000, 'Kowalski', 26000]
max_income = max(enumerate(incomes[1::2]), key=lambda x: x[1])
print(max_income[0] * 2)

如果您想要索引和条目,可以调整代码。

max_income = max(enumerate(zip(incomes[::2], incomes[1::2])), key=lambda x: x[1][1])
print(max_income)

这将为您提供一个以索引作为第一个条目的元组,以及一个以名称和收入作为第二个条目的元组。 要将 map 这个索引添加到您的incomes列表中,它必须乘以2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM