[英]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.