簡體   English   中英

如何匹配帶有名稱的列表和帶有數字的列表

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM