You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python遍历字典列表查找元素 非0索引项匹配失败问题求助

问题根因

你写的代码存在两个核心问题,导致非索引0位置的书籍无法被匹配:

  • 循环逻辑错误:for循环内的else分支和return False语句放在了循环体内部,第一次循环检查索引0的书籍不匹配时,会直接执行return False终止整个方法,根本不会执行后续索引位置的检查
  • 列表定义语法错误:你定义availablebooks时给每本书单独套了方括号、用逗号分隔,实际生成的是包含两个单元素列表的元组,不是你预期的「字典组成的列表」,遍历取值时会出现结构不匹配的问题
修正方案

1. 修正藏书列表结构

把所有书籍字典放在同一个方括号内,组成标准的字典列表:

availablebooks = [
    {'Title': 'Eloquent JavaScript, Third Edition', 'Author': 'Marijn Haverbeke'},
    {'Title': 'Practical Modern JavaScript', 'Author': 'Nicolás Bevacqua'}
]

2. 修正借书方法逻辑

把「未找到书籍」的提示和返回逻辑移到循环外部,确保遍历完所有藏书后再判断是否存在目标书籍:

class Library:
    # 你已有的其他类方法保持不变即可
    def borrowBook(self, bookname):
        # 遍历同时获取索引和书籍信息,方便后续删除操作
        for book_idx, book_info in enumerate(availablebooks):
            if bookname in book_info['Title']:
                print("Here is your book! Enjoy")
                availablebooks.pop(book_idx)
                return True
        # 所有书籍遍历完成仍未匹配,才触发未找到提示
        print("The book is not available")
        return False
修改说明
  • 循环逻辑调整后,不会因为第一本书不匹配就直接终止方法,会逐本检查所有在架藏书
  • 用enumerate()替代range(len())的遍历写法,可读性更高,删除匹配书籍时也不会出现索引错位问题
  • 修正后的列表结构符合预期,遍历时可以直接取到每本书的字典对象,不会出现取值报错

内容的提问来源于stack exchange,提问作者Mausam Bahar Barbhuiya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 13:12:17