Skip to content

Latest commit

 

History

History
143 lines (82 loc) · 6.81 KB

the-right-way-to-access-dictionaries-in-python.md

File metadata and controls

143 lines (82 loc) · 6.81 KB

在 Python 中访问字典的正确方法

原文:www.kdnuggets.com/the-right-way-to-access-dictionaries-in-python

在 Python 中访问字典的正确方法

图片由作者提供

  • 在处理数据时,尤其是使用我们喜爱的 Python 语言时,字典作为一种基本的数据结构脱颖而出,准备好向那些知道如何解锁它的人展示其数据。

我们的前三名课程推荐

1. Google 网络安全证书 - 快速进入网络安全职业的快车道。

2. Google 数据分析专业证书 - 提升你的数据分析技能

3. Google IT 支持专业证书 - 支持你的组织的 IT


  • 在 Python 中,字典是一种无序且可变的集合,设计用来存储类似于映射的数据值。与仅包含单一值作为元素的其他数据类型不同,字典包含由冒号“:”分隔的键值对。

  • 这种键值对结构提供了一种存储数据的方法,以便可以通过键而不是位置有效地检索数据。

  • 然而,大多数时候,当查找一个不存在的键时,出现的 KeyError 会中断我们的整个执行。这就是为什么本指南尝试阐明并解释一些有效的访问字典的方法,以避免中断我们的执行。

理解 Python 字典

  • 想象一个字典作为一个动态存储系统,每个你希望存储的项目都有一个唯一的标识符或“键”,可以直接引导你到它。

在 Python 中访问字典的正确方法

图片由作者提供

  • 在 Python 中,字典用花括号 {} 声明,键及其对应的值由冒号“:”分隔,每对之间由逗号分隔。

  • 这是一个简单的表示:

# Creating a simple dictionary with keys and values
salaries = {
   'Data Scientist': 100000,
   'Data Analyst': 80000,
   'Data Engineer': 120000}

print(salaries)
  • 创建字典只是开始。字典的真正用途在于检索和操作这些存储的数据时。

常见陷阱

  • 访问字典中的值的常见方法是使用方括号中的键名:
# Accessing a value using the key
print(salaries['Data Scientist'])  # Outputs: 100000

print(salaries['Professor'])  # This will raise a KeyError, as 'Professor' key doesn't exist
  • 这个方法看起来很简单,直到你遇到一个字典中不存在的键,从而导致 KeyError。

  • 这是一个常见的问题,可能会使较大的项目变得复杂。

更安全的方法

  • 为了避免 KeyError,你可以考虑使用 if 语句或 try-except 块来处理缺失的键。

  • 这些方法虽然有效,但在更复杂的代码中可能会变得繁琐。幸运的是,Python 提供了更优雅的解决方案,主要有两个:

  • get() 方法

  • setdefault() 方法

使用get()方法

get()方法是从字典中检索值的更高效方式。它需要你要查找的键,并允许一个可选的第二个参数作为默认值,如果没有找到该键。

# Using get() to safely access a value
salary = salaries.get('Data Scientist', 'Key not found')
print(salary)  # Outputs: 30

# Using get() with a default value if the key doesn't exist
salary = salaries.get('Professor', 'Key not found')
print(salary)  # Outputs: 30

这是访问字典最直接的方法,同时确保不会出现 KeyError。使用默认值是确保一切正常的安全方法。

然而,这种方法不会更改我们的字典,有时我们需要字典来存储这个新参数。

这引导我们到第二种方法。

利用setdefault()方法

对于那些不仅希望安全地检索值,而且还希望使用新键更新字典的场景,setdefault()变得非常宝贵。

这种方法检查键是否存在,如果不存在,则添加带有指定默认值的键,从而有效地修改原始字典。

# Using setdefault() to get a value and set it if not present
salary = salaries.setdefault('Professor', 70000)
print(salary)  # Outputs: 70000 since 'Professor' was not in the dictionary

# Examining the dictionary after using setdefault()
print(salaries) # Outputs: {'Data Scientist': 100000, 'Data Analyst': 80000, 'Data Engineer': 120000, 'Professor': 70000}

在使用setdefault()后检查playersHeight将显示新增的键及其默认值,从而改变原始字典结构。

最终推荐

get()setdefault()之间的选择取决于你的具体需求。当你只需检索数据而不更改原始字典时,使用get()。当你的任务需要向字典中添加新条目时,选择setdefault()

改变旧习惯可能需要一些努力,但转向使用get()setdefault()可以显著提升你 Python 代码的鲁棒性和可读性。

当你将这些方法融入你的编程实践中时,你会迅速欣赏到它们的高效性以及它们处理潜在错误的无缝方式,使它们成为你 Python 工具箱中不可或缺的工具。

get()setdefault()在处理此类格式和访问字典方面发挥着关键作用。

我希望本指南对你有所帮助,下次处理字典时,你可以更有效地进行。

你可以查看以下 GitHub 仓库中的相应 Jupyter Notebook。

Josep Ferrer 是来自巴塞罗那的分析工程师。他毕业于物理工程专业,目前从事人类流动性领域的数据科学工作。他还是一名兼职内容创作者,专注于数据科学和技术。Josep 撰写关于人工智能的文章,涵盖了该领域的持续爆炸性应用。

更多相关话题