如何在 Python 中检查一个值是否在字典中

Rayven Esplanada 2023年1月30日
  1. 使用 get() 和键检查值是否存在于字典中
  2. 使用 values() 检查指定的值是否存在于字典中
  3. 如果值是一个列表,检查值是否存在于一个字典中
如何在 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() 来遍历这些值,并比较你要找的值是否存在于值列表中。当你想检查一个指定的值是否存在于一个字典中时,这就会有帮助。

Rayven Esplanada avatar Rayven Esplanada avatar

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

相关文章 - Python Dictionary