如何搜索列表中的项目?

时间:2016-05-08 02:58:19

标签: python

我尝试生成的代码是一个允许用户输入搜索词的程序,然后打印出匹配的搜索。上下文是列表中的列表。这些子列表是句子和作者。

myList = [["Hello my name is Liam", "John Doe"], ["Hello my name is Jeff", "Jane Doe"]]

search = input("search: ")
for i in myList:
    for j in i:
        if search in j.lower():
            print('"{}"'.format(i[0]))
            print("--{}".format(i[1]))

搜索工作正常,但我想要做的是,当搜索运行时,它只搜索句子中的匹配,而不是作者。因此,如果我搜索"John",则不会出现任何内容,因为作者索引中的内容不是句子索引。

我尝试使用

for j in i[0]:

但它没有用。

2 个答案:

答案 0 :(得分:2)

不要遍历每个子列表,只需检查索引0中的列表:

search = input("search: ")
for i in myList:
    if search in i[0].lower():
        print('"{}"'.format(i[0]))
        print("--{}".format(i[1]))

答案 1 :(得分:1)

试一试! enumerate()在大多数列表/数组情况下都可以创建奇迹。

myList = [["Hello my name is Liam", "John Doe"], ["Hello my name is Jeff", "Jane Doe"]]    
search = input("search: ")
for i in myList:
    for index, j in enumerate(i):
        if index > 0:
            continue
        if search.lower() in j.lower():
            print('"{}"'.format(i[0]))
            print("--{}".format(i[1]))

不要忘记小写搜索字符串,因此它不区分大小写。在这种情况下考虑内部数组的连音符。我几乎没有找到使用它们的理由+在我使用的大多数语言中都不可用,但如果你需要你所呈现的结构,那就合适了。