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

Python如何通过列表元素匹配字典键获取对应值

匹配字典键获取对应值实现方案

你现有代码仅匹配了root列表的第一个元素,且通过遍历字典所有键做相等判断的写法没有利用字典按键查询的O(1)效率优势,可参考以下方式实现:

  • 前置优化点
    • 代码开头from turtle import clear为无用导入,可直接删除
    • 列表做成员判断(i not in VP)的时间复杂度为O(n),数据量大时建议先将VP转为集合,可把判断速度提升数个量级,你注释里的集合写法就是用于这个优化的
    • 用zip(SP,VP)构建字典时,如果SP列存在重复值,后出现的键值对会覆盖前序同键的内容,如果需要保留所有映射关系,可以构建值为列表的字典,常规单值匹配场景下现有写法可正常使用
  • 单元素查询方法
    字典原生支持按键直接取值,不需要遍历所有键,推荐用get()方法做安全查询,避免键不存在时抛出异常:
    # 查询root第一个元素对应的值,键不存在时返回None,也可自定义默认返回值
    first_val = d.get(root[0], default="无匹配值")
    print(first_val)
    
  • 批量匹配root所有元素的对应值
    遍历root列表做查询即可,不要遍历字典键:
    import pandas as pd 
    
    df = pd.read_excel(r'path').fillna("@Null$tring").sort_values(by=['VP'])
    SP = df['SP'].tolist()
    VP = df['VP'].tolist()
    
    # 转集合优化成员判断速度
    vp_set = set(VP)
    root = [i for i in SP if i not in vp_set]
    
    d = dict(zip(SP, VP))
    
    # 存储所有匹配结果
    match_res = {}
    for item in root:
        match_res[item] = d.get(item, default="未找到匹配值")
    
    print(match_res)
    

如果仅需要打印匹配结果,不需要存储,可直接在遍历中输出:

for item in root:
    print(f"匹配键:{item},对应值:{d.get(item)}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 04:24:24