Python字典循环取值问题:如何根据书名返回对应ISBN?
解决Python字典中根据书名返回对应ISBN的问题
嘿,我懂你遇到的麻烦了——想通过输入书名获取对应的ISBN,结果程序把字典里所有值都返回了对吧?别担心,咱们用两种方法来搞定它:
方法1:直接利用字典的键值映射(最推荐)
字典本身就是为键值对查询设计的,根本不需要循环!直接用输入的书名作为键去取值就行,还能通过get()方法处理书名不存在的情况,避免报错。
示例代码:
# 先定义你的书-ISBN字典(示例) books = { "Python Crash Course": "978-1593279288", "Fluent Python": "978-1491946008", "Automate the Boring Stuff": "978-1593275990" } # 获取用户输入的书名 user_title = input("请输入要查询的书名:") # 直接通过键获取ISBN,没找到则返回提示 target_isbn = books.get(user_title, "抱歉,未找到该书名对应的ISBN") print(target_isbn)
方法2:如果一定要用循环(比如需要额外逻辑)
要是你必须用循环处理(比如要做模糊匹配、格式校验等),那关键是找到匹配项后立即终止循环并返回结果,不然程序会遍历整个字典,导致返回所有值或者最后一个值。
示例代码:
def get_book_isbn(target_title, book_dictionary): for title, isbn in book_dictionary.items(): # 可以加大小写忽略的逻辑,提升用户体验 if title.lower() == target_title.lower(): return isbn # 找到就返回,直接终止循环和函数 # 遍历完字典都没找到,返回提示 return "抱歉,未找到该书名对应的ISBN" # 定义字典 books = { "Python Crash Course": "978-1593279288", "Fluent Python": "978-1491946008", "Automate the Boring Stuff": "978-1593275990" } # 交互逻辑 user_input = input("请输入要查询的书名:") result = get_book_isbn(user_input, books) print(result)
小提示
如果用户输入的书名可能存在大小写、空格差异(比如输入"python crash course"而字典里是"Python Crash Course"),可以把字典的键和用户输入都统一转成小写(或大写)再比较,就像上面代码里的title.lower() == target_title.lower(),这样查询更友好。
内容的提问来源于stack exchange,提问作者AwesomeMcFunbug
相关产品推荐
相关产品推荐

