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