[英]Searching elements in a 2D list in Python
我有一個包含大約 1000 個元素的二維列表。 它看起來像這樣:
myList = [['1', 'John', 'Doe', 'jdoe@email.com', '234-35-2355'], ['2', 'Rebecca', 'Swan', 'rswan@email.com', '244-56-4566'], ['3', 'Terry', 'Smith' 'tsmith@email.com', '345-45-1234']]
索引 [1] 是他們的名字,我想搜索這個列表(有 1000 人,為簡單起見只使用了 3 個),看看他們是否在列表中,如果有,打印他們的信息,而不使用 Numpy .
到目前為止,我有:
firstName = input('Enter the first name of the record: ')
row = len(myList)
found = False
for row in my list:
for element in row:
if element == firstName:
found = True
break
if found:
break
if found:
print('User ID: ', myList[0])
print('First Name: ', myList[1])
print('Last Name: ', myList[2])
print('Email: ', myList[3])
print('Login IP: ', myList[4])
else:
print('There is no record found with first name', firstName)
現在這似乎正在尋找這個人是否在那里,但是我在打印信息之后遇到了麻煩,因為我不知道如何找到這個人的索引,我相信如果我有索引打印類似於myList[index][1]
編輯:好的,我看到這是將 myList[1] 更改為 row[1] 的簡單修復。 現在假設您搜索一個名字並且列表中的兩個人具有相同的名字,並且您想打印兩組信息,我將如何 go 呢?
許多可能的方法之一:
def findByName(name, lst):
return filter(lambda x: x[1] == name, lst)
for item in findByName("John", myList):
print(item)
這產生
['1', 'John', 'Doe', 'jdoe@email.com', '234-35-2355']
persons = [entry for entry in myList if entry[1] == name]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.