如何搜索列表列表(地址簿)

时间:2015-12-23 00:20:04

标签: python python-3.5

我正在尝试构建一个地址簿,并建议创建一个搜索功能,以便它可以显示该“名称”(人物)的电话号码和电子邮件。

此人之前已添加,所以看起来像这样:

 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个变量。

1 个答案:

答案 0 :(得分:0)

请注意,您错误地使用了andprint会返回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')