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

Python如何检查列表元素是否存在于字典键中并替换为对应值

问题解决

原代码错误点

  • 遍历过程调用append()会向列表尾部追加内容,而非修改原有位置的匹配元素,无法得到预期的替换结果
  • 追加的是dict1.values()整个字典值视图对象,而非单个匹配键对应的取值
  • 你遇到的TypeError: unhashable type: 'dict_keys'属于笔误类错误,通常是误将dict.keys()返回的视图对象作为需要哈希类型的参数(比如字典键、集合元素)使用导致,你贴出的循环代码本身不会触发该报错

实现代码

写法1:列表推导式(最简洁,推荐)

如果需要只保留匹配到的元素,直接用:

list1 = ['Customer_Number', 'First_Name', 'Last_Name']
dict1 = {'Customer_Number': 'A', 'First_Name': 'B', 'Middle_Name': 'C', 'Last_Name': 'D', 'Org_Names': 'E'}
result = [dict1[ele] for ele in list1 if ele in dict1]

如果需要保留未匹配到的原元素,修改为:

result = [dict1.get(ele, ele) for ele in list1]

写法2:直接修改原列表

如果需要修改原列表而非生成新列表,用枚举遍历索引修改:

for idx, ele in enumerate(list1):
    if ele in dict1:
        list1[idx] = dict1[ele]

输出结果

运行以上代码均可得到预期输出:

['A', 'B', 'D']

优化提示

判断元素是否为字典的键,不需要写ele in dict1.keys(),直接写ele in dict1即可,执行逻辑完全一致且运行效率更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:12:06