如何在 Python 中迭代字典

2024 年 08 月 29 日 | 阅读 9 分钟

Python 是一种强大且广受欢迎的编程语言,常用于各种任务,包括数据分析、Web 开发、人工智能等。字典是 Python 的基本数据结构之一,它是一个无序的键值对集合。在本文中,我们将讨论如何在 Python 中遍历字典。

在 Python 中,字典由花括号表示,由冒号 (:) 分隔的键值对组成。值可以是任何数据类型,而键可以是任何不可变数据类型,如文本、数字或元组。以下是 Python 字典的示例:

在 Python 中遍历字典有几种方法。让我们详细讨论每种方法。

1. 使用 items() 方法

在 Python 中,使用 items() 函数遍历字典既简单又高效。items() 方法返回一个视图对象,其中包含字典中的键值对作为元组。在 for 循环中,您可以使用此视图对象遍历键值对。

这是一个示例

输出

name : John
age : 30
gender : Male

在此示例中,items() 方法用于从视图对象中获取字典中的键值对。然后使用 for 循环遍历键值对。在循环中,使用 key 和 value 变量访问键值对并将其打印出来。

使用 items() 方法的一个好处是它提供了一个视图对象,这是一个动态对象,可以反映对字典所做的更改。这意味着在迭代过程中对字典所做的任何更改都将反映在视图对象中。

这是一个示例

输出

name : John
age : 35
gender : Male

在此示例中,我们在迭代过程中更改了“age”键的值。因此,items() 方法返回的视图对象反映了此修改并显示了新值。

items() 方法的另一个好处是它比单独使用 keys() 和 values() 方法更有效。这是因为无需单独使用 keys() 和 values() 方法并生成两个不同的视图对象。相反,items() 方法返回一个包含字典键和值的视图对象。

总而言之,在 Python 中使用 items() 方法遍历字典相对快速简单。它返回一个动态视图对象,该对象反映在迭代过程中对字典所做的更改,并允许您在单个循环中访问字典的键和值。

2. 使用 keys() 方法

Python 的 keys() 函数返回一个包含字典键的视图对象。可以通过在 for 循环中使用此视图对象来遍历字典中的键。

这是一个示例

输出

name
age
gender

在此示例中,keys() 方法用于检索包含字典键的视图对象。之后,我们使用 for 循环遍历这些键。我们在循环中打印这些键。

如果您只需要访问字典的键,keys() 方法比 items() 方法更有效。这是因为 items() 函数返回一个包含字典键和值的视图对象,而 keys() 方法的视图对象只提供字典的键。

keys() 方法的另一个好处是它允许确定字典中是否存在特定键。为此可以使用“in”关键字。

这是一个示例

输出

The 'name' key is present in the dictionary.

在这种情况下,“in”关键字用于查看字典中是否包含“name”键。为此,我们首先使用 keys() 方法检索包含字典键的视图对象,然后检查“name”是否在此视图对象中。

总而言之,在 Python 中使用 keys() 方法遍历字典的键相对快速简单。它使您只能访问字典的键,并且可以使用它来查看字典中是否包含特定键。

3. 使用 values() 方法

Python 中的 values() 方法返回一个包含字典值的视图对象。此视图对象可在 for 循环中用于遍历字典的值。

这是一个示例

输出

John
30
Male

在此示例中,values() 方法用于检索包含字典值的视图对象。然后使用 for 循环遍历这些值。我们在循环中打印这些值。

如果您只需要访问字典的值,使用 values() 方法是有利的,因为它比使用 items() 方法更快。这是因为 items() 函数返回一个包含字典键和值的视图对象,而 values() 方法的视图对象只提供字典的值。

使用 values() 方法的另一个好处是能够检查是否存在给定值。

这是一个示例

输出

The 'John' value is present in the dictionary.

在这种情况下,“in”关键字用于查看字典中是否包含值“John”。为此,我们首先使用 values() 方法检索包含字典值的视图对象,然后检查是否存在“John”。

总而言之,在 Python 中使用 values() 方法遍历字典的内容相对快速简单。它使您只能访问字典值,并且可以使用它来查看字典中是否包含特定值。

4. 直接在字典上使用 for 循环

我们也可以通过直接在字典上使用 for 循环来遍历字典。当我们以这种方式遍历字典时,循环将遍历字典的键。这是一个示例:

这是一个示例

输出

name John
age 30
gender Male

在这个例子中,我们直接在字典上使用了一个 for 循环。我们在循环内部遍历字典的键。我们使用方括号语法,如 `my_dict[key]`,来获取每个键的值。

直接在字典上使用 for 循环来遍历字典的键和值既方便又高效。键的顺序可能与它们最初添加到字典中的顺序不同。如果您需要按指定顺序遍历字典,您可能需要考虑使用我们讨论过的其他技术之一,例如 items() 方法。

由于您可以在一个循环中完成这两件事,因此当您需要访问字典的键和值时,它会特别有用。

需要注意的是,以这种方式遍历字典时,无法保证键的访问顺序。换句话说,键的顺序可能与它们最初添加到字典中的顺序不同。如果您需要按指定顺序遍历字典,请使用我们介绍过的其他技术之一,例如 items() 函数。

总而言之,直接使用 for 循环遍历字典的键和值是一种实用且有效的方法。但是,由于无法保证键的访问顺序,因此此方法可能并非总是最佳选择。

5. 使用 enumerate() 函数。

使用 enumerate() 函数。

Python 中的 enumerate() 函数是一个内置函数,允许您遍历序列(例如列表或元组),同时跟踪序列中每个项目的索引。但是,它也可以用于遍历字典中的项目。

这是一个示例

输出

0 name John
1 age 30
2 gender Male

在此示例中,我们将 enumerate() 函数与 items() 方法结合使用,以遍历字典中的项目。在 for 循环中,我们使用元组解包将字典中每个项目的键和值分配给变量。我们还使用 index 变量来跟踪在遍历字典时每个项目的索引。

以这种方式使用 enumerate() 函数在您需要跟踪字典中每个项目的索引时特别有用。当您需要并行遍历字典和另一个序列时,它也很有用,因为您可以使用相同的索引变量来跟踪两者。

值得注意的是,当您在字典上使用 enumerate() 函数时,它会返回一个元组序列,其中每个元组包含字典中每个项目的键值对。每个元组的第一个元素是项目的索引,第二个元素是键值对。

总而言之,Python 中的 enumerate() 函数是遍历字典中的项目并跟踪每个项目索引的有用工具。当您需要并行遍历字典和另一个序列时,它特别有用。

6. 使用 while 循环

在 Python 中,您还可以使用 while 循环来遍历字典。while 循环是一种控制流语句,允许您在特定条件为真时重复执行一段代码块。以下是您如何使用 while 循环遍历字典的示例:

输出

name John
age 30
gender Male

在此示例中,我们首先使用 keys() 方法和 list() 构造函数将字典的键转换为列表。然后,我们将计数器变量 i 初始化为 0。在 while 循环中,我们使用键在键列表中的索引访问字典的键值对。然后,我们打印字典中每个项目的键和值,并将计数器变量加 1。

当您需要对字典中的每个项目执行一些条件逻辑时,使用 while 循环遍历字典会很有用。例如,您可以使用 while 循环在字典中搜索特定键,或者根据某些条件修改某些键的值。

然而,使用 while 循环遍历字典可能不如我们讨论过的其他一些方法效率高和可读性强。它需要额外的代码来跟踪每个键的索引,并且可能更难阅读和理解代码。

总而言之,while 循环可用于在 Python 中遍历字典,但它们可能不是最有效或最易读的方法。通常最好使用我们讨论过的其他方法之一,例如 for 循环或内置方法,如 items()、keys() 或 values()。

结论

在 Python 中遍历字典是许多应用程序中常见的任务。在本文中,我们讨论了在 Python 中遍历字典的六种不同方法,包括使用 items()、keys() 和 values() 方法,直接在字典上使用 for 循环,使用 enumerate() 函数,以及使用 while 循环。这些方法各有利弊,方法的选择取决于应用程序的具体要求。