Python 判断字典中是否存在某个键

Python 判断某个键是否存在于字典中的方法有很多,最直接的就是使用 in 操作符,这也是推荐方法。网上一些文章写的不太准确,此处做个简要记录。文末附上代码。

1、in 操作符

key in dict

如果字典中存在 key,则返回 True,否则返回 False 。not in 操作符相反。

2、get() 方法

dict.get(key, default=None)

如果 dict 中有 key,则返回 key 对应的 value,否则返回默认值 None,可指定默认值。加上 if/else 判断即可。当需要用到键对应的值时,使用此方法。

3、keys() 方法

dict.keys()

keys() 方法会以列表形式返回字典中所有的键,再 key in dict.keys() 判断即可。此方法会先返回一个列表,不符合Python风格,推荐使用方法1中字典默认的迭代器。

4、__contains__ 方法

dict.__contains__(key)

同样的,如果字典中存在 key,则返回 True,否则返回 False 。当然 __contains__ 的主要用途不仅于此。

5、setdefault() 方法

dict.setdefault(key, default=None)

setdefault() 方法,如果字典中不存在指定 key,将会添加该键并将值设为默认值。如果字典中已有指定 key,则返回该键对应的值,如果没有,则返回为该键设置的值。collections 模块中的 defaultdict 函数也是一样的效果。不过这有些多此一举了。

6、has_key() 方法(仅 Python2)

dict.has_key(key)

如果键在字典里,返回 True,否则返回 False。仅在 Python2 中有效,Python3 中已经没有这个函数了。

7、try/except 方法

没错,你可以用 try/except 来捕获访问字典中不存在的键时,出现的 KeyError 异常。

8、同时判断多个键是否存在与字典中

set([key1,key2]).issubset(dict)

先将多个键放入集合,再使用 issubset() 方法来判断其所有元素是否都在 dict 的键组成的集合中。

实例:

    my_dict = {
        'aaa': 'AAA',
        'bbb': 'BBB',
        'ccc': 'CCC'
    }
    
    # 方法1
    print('aaa' in my_dict)  # True
    print('ddd' in my_dict)  # False
    
    # 方法2
    print(True if my_dict.get('aaa') else False)  # True
    print(True if my_dict.get('ddd') else False)  # False
    
    # 方法3
    print('aaa' in my_dict.keys())  # True
    print('bbb' in my_dict.keys())  # True
    print('ddd' in my_dict.keys())  # False
    
    # 方法4
    print(my_dict.__contains__('aaa'))  # True
    print(my_dict.__contains__('ddd'))  # False
    
    # 方法5
    my_dict.setdefault('aaa', default=None)  # 'AAA'
    my_dict.setdefault('ddd', default=None)  # None
    
    # 方法6 (仅Python2)
    my_dict.has_key('aaa')  # True
    my_dict.has_key('ddd')  # False
    
    # 方法7
    try:
        my_dict['aaa']  # 'AAA'
    except KeyError:
        pass
    
    # 同时判断多个键是否存在与字典中
    set(['aaa', 'bbb']).issubset(my_dict)  # True
    set(['bbb', 'ddd']).issubset(my_dict)  # False

后记:

CSDN 和 cnblogs 上很多“上古时期”或存在错误的文章,在中文搜索引擎中的排名本来就很靠前,再加上一些不求甚解的博主胡乱转载,导致像俺这样的技术小白经常被弄的一头雾水。所以,搜索时可用英文在 Google 上检索,可能会找到更准确的答案。

参考资料:

Check if a given key already exists in a dictionary

» 链接地址:https://wbt5.com/python-check-key.html »英雄不问来路,转载请注明出处。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注