Python中如何将用户输入值与字典中的值进行比较?
检查输入数字是否存在于字典的列表值中
你的原代码存在几个逻辑和语法问题,导致无法正确实现需求,以下是修正方案:
原代码问题分析
- 遍历字典时,直接
for key, value in my_dict会触发错误,因为字典默认遍历的是键,要获取键值对需使用my_dict.items() - 用户输入的内容是字符串类型,而字典中的值是整数,直接比较永远不会相等,需要将输入转为整数
- 把输入语句放在循环内会导致每次循环都要求用户输入,逻辑错误,应该先获取一次输入再进行检查
修正后的代码(基础版)
my_dict = {'apple': [900, 190], 'orange': [1300, 90], 'pineapple': [550, 13], 'carrot': [600, 60], 'cucumber': [900, 30], 'egg plant': [1100, 20], 'zucchini': [1300, 10], 'garlic': [300, 70]} # 获取用户输入并转换为整数,同时处理非数字输入的情况 try: usernumber = int(input('Input your number: ')) except ValueError: print("请输入有效的数字") exit() # 初始化标记变量,记录是否找到目标数字 is_found = False # 遍历字典中所有的列表值 for value_list in my_dict.values(): if usernumber in value_list: is_found = True break # 找到后立即停止遍历,提升效率 # 根据结果输出 print("Equal" if is_found else "Not equal")
更简洁的实现(使用any()函数)
利用Python的any()函数可以快速判断是否存在符合条件的元素,代码更紧凑:
my_dict = {'apple': [900, 190], 'orange': [1300, 90], 'pineapple': [550, 13], 'carrot': [600, 60], 'cucumber': [900, 30], 'egg plant': [1100, 20], 'zucchini': [1300, 10], 'garlic': [300, 70]} try: usernumber = int(input('Input your number: ')) except ValueError: print("请输入有效的数字") exit() # 检查是否有任意一个列表包含输入的数字 if any(usernumber in lst for lst in my_dict.values()): print("Equal") else: print("Not equal")
当用户输入190时,两段代码都会检查到apple对应的列表中包含190,输出"Equal"。
内容的提问来源于stack exchange,提问作者khamsablao laowords
相关产品推荐
相关产品推荐

