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

如何简写pandas中基于字典匹配查询返回对应键的函数代码

问题对应解决方案

错误原因

你尝试的写法混淆了生成器推导式和三元表达式的语法结构,Python不支持直接在外层拼接else返回默认值的写法。

正确一行式实现

使用next()的默认返回参数即可完美匹配你原函数的逻辑,代码如下:

def getModelType(row):
    return next((key for key, value in models.items() if row.MODEL in value), row.MODEL)

逻辑说明:next()会迭代传入的生成器,返回第一个符合匹配条件的key;如果遍历完所有models键值对都没有匹配项,就直接返回第二个参数的默认值row.MODEL,和你最初的循环实现逻辑完全一致。

高性能优化方案

如果处理的数据量较大、或者models字典的条目较多,建议提前构建反向查找映射,避免每次调用函数都遍历整个models字典,性能提升非常明显:

# 仅需构建一次的反向查找映射
model_mapping = {model_val: key for key, val_list in models.items() for model_val in val_list}

def getModelType(row):
    return model_mapping.get(row.MODEL, row.MODEL)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 19:36:03