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

Python根据字典值查询对应key时函数返回None,应如何修改代码?

代码问题分析
  • 问题1:if aller in listofallergies 是判断输入值是否为字典的键,而你的需求是匹配字典的值,因此输入得分永远无法触发if分支,直接走else返回None
  • 问题2:listofallergies.keys(aller) 语法错误,keys()方法不接收参数,且该方法是返回所有键的集合,无法实现根据值查键的功能
  • 问题3:if分支内只有print操作没有返回值,就算分支触发,函数最终返回值依然是None
修复方案

根据调用频次可以选择两种实现方式:

单次遍历实现(适合少量调用场景)

def allergie(aller):
    listofallergies = {'eggs': 1 , 'peanuts':2 ,'shellfish': 4 , 'strawberries':8 , 'tomatoes': 16 , 'chocolat':32 , 'pollen': 64 , 'cats': 128 }
    for key, value in listofallergies.items():
        if value == aller:
            return key
    return None 

print(allergie(4)) # 输出shellfish

反向映射实现(适合高频调用场景,效率更高)

提前构建值到过敏原的映射字典,后续查询时间复杂度为O(1):

# 映射字典仅需构建一次
value_to_allergen = {1: 'eggs', 2: 'peanuts', 4: 'shellfish', 8: 'strawberries', 16: 'tomatoes', 32: 'chocolat', 64: 'pollen', 128: 'cats'}
def allergie(aller):
    return value_to_allergen.get(aller)

print(allergie(4)) # 输出shellfish

内容的提问来源于stack exchange,提问作者Dali Lemkecher

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 08:06:04