【问题标题】:How to search for a word in a string of a dictionary in a list?如何在列表中的字典字符串中搜索单词?
【发布时间】:2019-01-05 16:20:16
【问题描述】:
def SearchEntryComment():
    print("\n\nSearch for guestbook comment with a keyword\n")
    CommentSearch = input("Enter key word for search: ")
    for i in range(len(dlGuestBook)):
        if CommentSearch in dlGuestBook[i]["Comment"]:
            print(i+1, ".", dlGuestBook[i] ["FirstName"], dlGuestBook[i]["LastName"], dlGuestBook[i]["Date"])
            print(dlGuestBook[i]["Comment"], "\n")
        else:
            print("No results found")
    print("\n")

这是我当前的代码,但是当我为列表中的每个元素运行它时,它将打印“未找到结果”,如果存在,它将打印那个。我希望它要么打印存在的结果,要么打印没有找到的结果。

【问题讨论】:

  • 在进入for循环之前,将一个名为found的变量设置为False。如果发现某些内容,请将其设置为 True。循环结束后,您将知道是否打印“未找到结果消息”。

标签: python list dictionary search


【解决方案1】:

只需使用resultCount 保存列表中找到的结果计数,并在 for 循环后检查计数。

def SearchEntryComment():
    print("\n\nSearch for guestbook comment with a keyword\n")
    CommentSearch = input("Enter key word for search: ")
    resultCount = 0
    for i in range(len(dlGuestBook)):
        if CommentSearch in dlGuestBook[i]["Comment"]:
            print(i+1, ".", dlGuestBook[i] ["FirstName"], dlGuestBook[i]["LastName"], dlGuestBook[i]["Date"])
            print(dlGuestBook[i]["Comment"], "\n")
            resultCount += 1
    if resultCount == 0:
        print("No results found")
    print("\n")

【讨论】:

    【解决方案2】:

    仔细查看您的 for 循环在做什么。

    for i in range(len(dlGuestBook)): # for each entry in the guestbook
            if CommentSearch in dlGuestBook[i]["Comment"]:
                # print the comment
            else:
                print("No results found")
    

    我认为您想要的只是在循环完成后打印“未找到任何结果”,如果它没有找到任何结果。像这样的东西可能是一个解决方案。

    foundComment = False
    for i in range(len(dlGuestBook)):
        if CommentSearch in dlGuestBook[i]["Comment"]:
            foundComment = True
            # print the comment
    
    if not foundComment:
        print("No results found")
    

    【讨论】:

    • 应该是 FalseTrue 而不是 falsetrue
    • 这一项不太有效,因为对于所有以前的结果,它仍然不会显示任何结果。例如,如果第三个有来自 CommentSearch 的评论,它将显示没有结果没有结果评论,但我明白你的意思
    猜你喜欢
    • 2022-11-19
    • 2014-03-25
    • 1970-01-01
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多