我正在尝试构建一个地址簿,并建议创建一个搜索功能,以便它可以显示该“名称”(人物)的电话号码和电子邮件。
此人之前已添加,所以看起来像这样:
lst = [['Robert', '12', 'robert@live.com'], ['Steve', '1', 'steve@limework.com']]
我希望找到罗伯特(每个例子)并打印他的号码(12)和电子邮件(robert@live.com)。
目前我的代码看起来像这样:
def searach(lst):
name=str(input("Name:"))
for i in range(len(lst)):
for i in range(len(lst)):
if name == lst[i]:
m=i
print(lst[m][1]) and print(lst[m][2])
break
else:
print("Name doesn´t exist!")
当我执行print(len(lst))
时,它会返回0值,因此无法遍历列表以便向我提供我需要的电话和电子邮件,但是当我执行print(lst[0][1])
和{{1它返回列表中第一个人的正确电话和电子邮件,在本例中为Robert。
我的帖子与建议的帖子不同,因为我有3个变量。
答案 0 :(得分:0)
请注意,您错误地使用了and
。 print
会返回None
,所以
Python不会打印第二部分。
我会使用快速列表理解来找到匹配的项目:
matches = [sublist for sublist in lst if sublist[0] == name]
在这种情况下,matches
将是
[['Robert', '12', 'robert@live.com']]
一种输出方式,允许多种匹配的可能性:
if matches:
for i in matches:
print(i[1], i[2])
else:
print('Not found')