[英]How to match a lists with name and a lists with numbers
初學者在這里。 我想給每個名字分配一個數字,這樣我就可以找到數字最大的人的名字。 我可以使用 max() 找到最大的數字,但是如何找到具有最大數字的名稱?
例如:
name = ['John', 'Joe','Jae']
number = ['10','20','30']
biggest_number = max(number)
name = ????
如何匹配這兩個列表以找到名稱?
您可以在列表中使用.index()
方法:它將為您提供編號為“30”的number
:
position = number.index("30")
name[position]
# 'Jae'
您可以獲取該數字的索引並使用該索引訪問第一個列表。 像這樣:
indx = number.index(biggest_number)
biggest_name = name[indx]
或者在一行中
biggest_name = name[number.index(biggest_number)]
找到最大數字的索引,然后根據索引找到名稱。
name = ['John', 'Joe','Jae']
number = ['10','20','30']
biggest_number = max(number)
max_index = number.index(biggest_number)
print(name[max_index])
您想要的是在數字和名稱之間有一個“關聯數組”。 在 Python 中使用字典完成,其中鍵是數字,值是名稱。
你可以這樣做:
name = ['John', 'Joe','Jae']
number = ['10','20','30']
num_to_name = { int(number): name for number, name in zip(number, name) }
print(num_to_name[max(num_to_name)])
符號{ x: y for x, y in collection }
稱為字典推導式,是在所有值都已知時定義字典的有效方法。
另請注意,在將數字用作鍵時,我冒昧地將數字轉換為整數,因為如果將它們保留為字符串,您可能會感到驚訝,例如:
numbers = ["90", "100"]
max(numbers)
'90'
在這里,由於它們是字符串,因此將執行字典順序搜索,並且由於字符 '9' 出現在字符 '1' 之后,因此程序將假定 '90' 大於 '100'。
使用整數你會得到你期望的行為。
你不想要max(number)
,你想要最大數量出現的 position 。 有多種方法可以做到,但最直接的方法是使用 numpy 的index = np.argmax(numbers)
來獲取 position,並且name = names[index]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.