Python字典值打印方法及键匹配无输出问题排查
解决字典值打印无输出的问题
你的代码存在两个核心问题,导致输入apple时没有输出:
- 语法错误:
print:("calories: ",str(dict1[key]))中print后多了一个冒号,这会直接导致语法错误,程序无法执行打印逻辑。 - 键大小写不匹配隐患:你对输入做了
casefold()转小写,但字典内部分键(比如sweet Cherries)包含大写字母,后续如果输入这类带大写的项,会因为匹配失败无法输出。
修正方案一(高效匹配,推荐)
直接构建一个键全为小写的映射字典,无需遍历即可快速匹配:
dict1={ "apple":130, "avocado":50, "banana":110, "cantaloupe":50, "grapefruit":60, "grapes":90, "honeydew melon":50, "kiwifruit":90, "lemon":15, "lime":20, "nectarine":60, "orange":80, "peach":60, "pear":100, "pineapple":50, "plums":50, "sweet Cherries":100, "tangerine":50, "watermelon":80 } # 生成键全为小写的新字典 lowercase_dict = {key.casefold(): val for key, val in dict1.items()} a = input("item: ").casefold() # 安全获取值,不存在则提示 calories = lowercase_dict.get(a) if calories is not None: print(f"calories: {calories}") else: print("Item not found")
修正方案二(基于原字典遍历)
如果不想额外创建字典,可在遍历时将原键转小写匹配,同时添加循环终止逻辑提升效率:
dict1={ # 原字典内容不变 } a=input("item: ").casefold() for key in dict1: if key.casefold() == a : print("calories: ", str(dict1[key])) break # 找到匹配项后立即退出循环 else: # 循环正常结束(未找到匹配项)时执行 print("Item not found")
内容的提问来源于stack exchange,提问作者Zahra Ramezani
相关产品推荐
相关产品推荐

