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

Python字典.get()方法在赋值与查找场景下的差异及报错疑问

字典.get()方法引发KeyError的原因分析

问题根源:不是.get()的问题,是下标访问[]的前置错误

你遇到的KeyError根本不是.get()方法导致的,而是在调用.get()之前,lookup[n]这一步已经触发了错误。

字典的**下标访问语法dict[key]**在键不存在时会直接抛出KeyError,而.get()方法正是用来避免这种情况的安全访问方式。但你在报错代码里,把lookup[n]作为.get()的第一个参数——当n是第一次出现时,lookup字典里还没有这个键,执行lookup[n]就会直接报错,.get()方法根本没机会执行。

对比两种用法的差异

报错的用法

if lookup.get(lookup[n], False) != True:

这里先执行lookup[n],如果n不在lookup中,直接触发KeyError,和.get()无关。

正常的用法

mapT[t[i]] = mapT.get(t[i], 0)

这里直接把t[i]作为键传给.get(),如果键不存在,.get()会返回默认值0,不会触发下标访问的错误,所以能正常运行。

修正后的代码

把lookup[n]换成n作为.get()的参数即可解决问题:

def containsDuplicate(self, nums: List[int]) -> bool:
    lookup = {}
    for n in nums:
        if not lookup.get(n, False):
            lookup[n] = True
        else:
            return True
    return False

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 21:32:54