如何在 Python 中检查一个值是否在字典中
本教程演示了如何检查一个值是否存在于 Python 字典中。在这里,我们将涉及相关的主题,例如搜索一个键给出的值,搜索一个特定的值,以及搜索一个对象或集合的值。
首先,如果值存在于字典中,我们需要打印 True
;否则打印 False
。
使用 get()
和键检查值是否存在于字典中
Python 中的字典有一个内置函数 key()
,它返回给定键的值。同时,如果它不存在,它将返回 None
。你可以使用这个函数作为条件来确定一个值是否存在于一个字典中。
让我们先声明一个简单的字典,里面有 int
键和字符串值。
simpDict = {
1: "Ant",
2: "Bear",
3: "Cat",
4: "Dog",
5: "Elephant"
}
如果你想用它的键对来寻找值,那么 key()
函数就是最好的方法。例如,你想搜索任何以 6 为键的值;按照下面的代码。
if (simpDict.key(6) != None):
print("True")
else:
print ("False")
由于 simpDict
函数没有键 6,所以这段代码将输出 False
。
使用 values()
检查指定的值是否存在于字典中
与寻找一个特定值的情况不同,在一个字典中寻找一个键是非常直接的;你只需要使用关键字 in
和你要在字典中寻找的键。
print( 3 in simpDict )
这样会输出 True
,因为键 3 存在。如果我们用一个不存在的键替换这个数字,那么它将输出 False
。
另一方面,如果你想在字典中寻找一个特定的值,你可以使用函数 values()
。values()
命令将返回一个字典中所有值的列表。使用 values()
,你可以利用 in
关键字对字典和指定的值进行查询。假设你想知道值 Elephant
是否在字典中,执行下面的代码。
print ( "Elephant" in simpDict.values() )
这行将输出 True
,因为在 simpDict
键 5 中存在 Elephant
这个词。
在 Python 2.X 中,还有两个类似于 values()
的函数,它们是 itervalues()
和 viewvalues()
;这些函数在 Python 3.X 版本中已经被弃用。
itervalues()
和 viewvalues()
命令将与 values()
命令完成同样的任务;然而,不同的实现虽然非常微不足道,但却大大影响了运行时间。
print ( "Elephant" in simpDict.itervalues() )
print ( "Elephant" in simpDict.viewvalues() )
两者都会返回与 values()
函数相同的输出。需要注意的是,冗余可能是这些函数从新的 Python 版本中被弃用的主要原因。
现在,如果字典中的值是像列表或对象这样的数据结构呢?让我们来看看。
如果值是一个列表,检查值是否存在于一个字典中
listDict = {1: ['a', 'b'],
2: ['b', 'c'],
3: ['c', 'd'],
4: ['d', 'e']}
现在,我们有一个带有 int
键的字典和一个作为值的字符列表。
假设我们想搜索列表 ['c', 'd']
是否存在于字典中。
print( ['c', 'd'] in listDict.values() )
结果输出将是 True
;这证实了通过迭代字典来比较集合也是可行的。
但是,如果你想检查列表值中的一个值是否存在于字典中呢?要解决这个问题,只需在值上循环,并在列表上使用 in
关键字,而不是在字典上。
例如,你想检查字符'e'
是否存在于这个列表中的值中。下面是要执行的代码。
tof = False
for value in listDict.values():
if ('e' in value):
tof = True
break
print(tof)
输出将打印出 True
,因为'e'
存在于字典中。
总之,使用函数 values()
来遍历这些值,并比较你要找的值是否存在于值列表中。当你想检查一个指定的值是否存在于一个字典中时,这就会有帮助。
Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.
LinkedIn