提问人:Wyatt C 提问时间:10/27/2023 最后编辑:Ken WhiteWyatt C 更新时间:11/2/2023 访问量:53
如何在不遍历列表中的所有项目的情况下创建 else 语句
How to make an else statement without looping through all items in the list
问:
我试图弄清楚如何在搜索带有 for 循环的词典列表后打印一个语句“找不到书”。但它为每本书打印出“未找到的书”,而这不是我要找的书。
这是相关代码
for item in books_sorted:
if item["title"] == search:
print(item.get("title"), ",", item.get("author"))
print("This book is in the collection")
else:
print("Book not found")`
我尝试将其格式化为(对于项目中的项目),并尝试在循环外编写异常。我尝试添加另一个 if 项目不在语句中。但我想不通。
答:
0赞
Chukwujiobi Canon
10/28/2023
#1
问题出在这一行
else:
print("Book not found")`
在循环的每次迭代中,如果
if item["title"] == search:
不计算为 ,则运行语句。True
else
请尝试以下操作:
books_sorted: list[dict] = •••
search = •••
did_find: bool = False
for item in books_sorted:
if item.get("title") == search:
did_find = True
print(“Title: ”, searchedValue.get("title"), "\n", “Author: ”, searchedValue.get("author"))
print("This book is in the collection")
break
if not did_find:
print("Book not found")
复杂度:列表长度中的 O(n)。
例外:无。 用于避免例外。dict.get()
KeyError
假设是 和 是明确定义的。books_sorted
search
0赞
Suramuthu R
10/28/2023
#2
因为,您已经在 for 循环中给出了 print('Book not found')。因此,它会检查列表中每本书的标题,如果标题不匹配,则给出输出;未找到书'。这里上面的 print 语句应该在 for 循环完成后给出。为了实现这一点,我们可以声明一个值为 0(或 False)的变量,如果找到特定的书,则可以将值更改为 1(或 True)。就这么简单:
c = 0
for item in books_sorted:
if item["title"] == search:
c = 1
print(item.get("title"), ",", item.get("author"))
print("This book is in the collection")
break
if c == 0:
print("Book not found")`
0赞
Alex Nea Kameni
10/28/2023
#3
一种方法是使用标志,如果找不到,则在循环末尾打印。book_found
search = "Your Search Query" # Replace with the book title you are searching for
book_found = False
for item in books_sorted:
if item["title"] == search:
print(item.get("title"), ",", item.get("author"))
print("This book is in the collection")
book_found = True
break # Exit the loop once a matching book is found
if not book_found:
print("Book not found")
另一种方法是在 tile==search 上过滤您的列表,如果结果列表为空,则打印未找到。
评论