如何用纯Python实现参考字典与字典列表匹配并提取对应值
纯Python原生实现方案
你可以直接通过遍历字典列表+键值对匹配实现,不需要引入pandas,以下是兼容所有Python3版本的写法:
def f(ref, dict_list): # 遍历所有字典,找到第一个完全匹配ref所有键值对的条目,返回其c键的值 return next( d["c"] for d in dict_list if all(d.get(k, object()) == v for k, v in ref.items()) )
如果你的运行环境是Python3.9及以上,可以用字典视图的子集判断简化写法:
def f(ref, dict_list): return next(d["c"] for d in dict_list if ref.items() <= d.items())
特性说明
- 无任何第三方依赖,比pandas实现轻量很多,且没有构建DataFrame的额外性能开销
- 不需要硬编码ref的键名,不管ref后续新增多少个匹配键都不需要修改代码,扩展性远优于原pandas实现
- 行为和你原实现完全一致:返回第一个匹配到的字典的c值,如果需要匹配不到时不抛异常,可以给next传第二个默认值,比如
next(..., None),匹配失败时会直接返回None
测试效果
代入你给出的示例参数:
ref = {"a": 1, "b": 2} dict_list = [{"a": 1, "b": 2, "c": "success!"}, {"a": 1, "b": 3, "c": "nope!"}] print(f(ref, dict_list)) # 输出 success!
内容的提问来源于stack exchange,提问作者dave-edison
相关产品推荐
相关产品推荐

