原文:
www.kdnuggets.com/the-right-way-to-access-dictionaries-in-python
图片由作者提供
- 在处理数据时,尤其是使用我们喜爱的 Python 语言时,字典作为一种基本的数据结构脱颖而出,准备好向那些知道如何解锁它的人展示其数据。
1. Google 网络安全证书 - 快速进入网络安全职业的快车道。
2. Google 数据分析专业证书 - 提升你的数据分析技能
3. Google IT 支持专业证书 - 支持你的组织的 IT
-
在 Python 中,字典是一种无序且可变的集合,设计用来存储类似于映射的数据值。与仅包含单一值作为元素的其他数据类型不同,字典包含由冒号“:”分隔的键值对。
-
这种键值对结构提供了一种存储数据的方法,以便可以通过键而不是位置有效地检索数据。
-
然而,大多数时候,当查找一个不存在的键时,出现的 KeyError 会中断我们的整个执行。这就是为什么本指南尝试阐明并解释一些有效的访问字典的方法,以避免中断我们的执行。
- 想象一个字典作为一个动态存储系统,每个你希望存储的项目都有一个唯一的标识符或“键”,可以直接引导你到它。
图片由作者提供
-
在 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()
方法是从字典中检索值的更高效方式。它需要你要查找的键,并允许一个可选的第二个参数作为默认值,如果没有找到该键。
# 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()
变得非常宝贵。
这种方法检查键是否存在,如果不存在,则添加带有指定默认值的键,从而有效地修改原始字典。
# 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 撰写关于人工智能的文章,涵盖了该领域的持续爆炸性应用。