首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
第4章 选择易懂的名称
4.1 命名风格
4.2 PEP 8 的命名风格
4.3 适当的名称长度
4.3.1 太短的名称
4.3.2 太长的名称
4.4 起易于搜索的名称
4.5 避免笑话、双关语和需要文化背景才能理解的词汇
4.6 不要覆盖内置名称
4.7 史上最差的变量名
第5章 揪出代码的坏味道
5.1 重复的代码
5.2 魔数
5.3 注释掉的代码和死代码
5.4 打印调试
5.5 带有数字后缀的变量
5.6 本该是函数或者模块的类
5.7 嵌套列表解析式
5.8 空的except块和糟糕的错误信息
5.9 代码坏味道的谬误
5.9.1 谬误:函数应该仅在末尾处有一个return语句
5.9.2 谬误:函数最多只能有一个try语句
5.9.3 谬误:使用flag参数不好
5.9.4 谬误:全局变量不好
5.9.5 谬误:注释是不必要的
第6章 编写Python 风格的代码
6.1 Python 之禅
6.2 学着喜欢强制缩进
6.3 使用timeit模块衡量性能
6.4 常被误用的语法
6.4.1 使用enumerate()而不是range()
6.4.2 使用with 语句代替open()和close()
6.4.3 用is 跟None 做比较而不用==
6.5 格式化字符串
6.5.1 如果字符串有很多反斜杠,请使用原始字符串
6.5.2 使用f-string 格式化字符串
6.6 制作列表的浅副本
6.7 以Python 风格使用字典
6.7.1 在字典中使用get()和setdefault()
6.7.2 使用collections.defaultdict()设置默认值
6.7.3 使用字典代替switch 语句
6.8 条件表达式:Python“丑陋”的三元运算符
6.9 处理变量的值
6.9.1 链式赋值和比较运算符
6.9.2 验证变量是否为多个值中的一个
当前位置:
首页>>
技术小册>>
Python编程轻松进阶(二)
小册名称:Python编程轻松进阶(二)
### 6.7.1 在字典中使用`get()`和`setdefault()` 在Python中,字典(Dictionary)是一种非常灵活且强大的数据结构,它允许我们存储键值对(key-value pairs)集合。字典的键(key)是唯一的,而值(value)可以是任何数据类型,包括另一个字典,从而实现了数据的嵌套和复杂结构的构建。在处理字典时,`get()`和`setdefault()`是两个非常实用的方法,它们以不同的方式帮助我们从字典中安全地访问和修改数据。 #### 6.7.1.1 `get()`方法 `get()`方法是字典的一个内置方法,它用于获取字典中给定键的值。如果键存在于字典中,则返回对应的值;如果键不存在,则返回指定的默认值(如果提供了的话),如果没有提供默认值,则返回`None`。`get()`方法的这种特性使得它在处理可能不存在的键时非常有用,因为它避免了使用`if`语句检查键是否存在,从而简化了代码并提高了可读性。 **基本用法**: ```python my_dict = {'name': 'Alice', 'age': 30} # 使用get()获取存在的键 name = my_dict.get('name') print(name) # 输出: Alice # 使用get()获取不存在的键,返回默认值 city = my_dict.get('city', 'Unknown') print(city) # 输出: Unknown # 如果没有提供默认值,且键不存在,则返回None occupation = my_dict.get('occupation') print(occupation) # 输出: None ``` **应用场景**: - **数据访问**:当你需要从一个字典中获取数据,但又不确定该键是否存在时,`get()`是一个很好的选择。 - **配置处理**:在处理配置文件或环境变量时,经常需要从一个字典中读取配置项,`get()`可以方便地提供默认值以防配置项缺失。 - **数据清洗**:在数据清洗过程中,可能需要从字典中提取信息,并处理缺失值,`get()`简化了这一过程。 #### 6.7.1.2 `setdefault()`方法 `setdefault()`方法也是字典的一个内置方法,它用于获取字典中给定键的值,但如果该键不存在,则插入该键并将值设为指定的默认值,然后返回该默认值。这与`get()`方法的区别在于,`setdefault()`在键不存在时会修改字典,而`get()`则不会。 **基本用法**: ```python my_dict = {'name': 'Alice', 'age': 30} # 使用setdefault()获取存在的键,不会改变字典 name = my_dict.setdefault('name', 'Default Name') print(name) # 输出: Alice print(my_dict) # 输出: {'name': 'Alice', 'age': 30},字典未改变 # 使用setdefault()获取不存在的键,字典被修改 city = my_dict.setdefault('city', 'Unknown') print(city) # 输出: Unknown print(my_dict) # 输出: {'name': 'Alice', 'age': 30, 'city': 'Unknown'},'city'键被添加 ``` **应用场景**: - **初始化默认值**:当你需要在一个字典中设置一系列键的默认值,并且这些键可能部分已存在时,`setdefault()`非常有用。 - **累积计数**:在处理需要计数的场景时,如统计某个元素出现的次数,可以使用`setdefault()`来初始化计数器的值。 - **动态构建数据结构**:在需要根据输入动态构建字典时,`setdefault()`可以用来确保字典中的结构(如嵌套字典)在需要时得到创建和初始化。 #### 结合使用`get()`和`setdefault()` 在实际编程中,`get()`和`setdefault()`经常需要结合起来使用,以满足复杂的数据处理需求。例如,在处理嵌套字典时,你可能需要首先检查某个键是否存在,如果不存在,则使用`setdefault()`来创建它,并使用`get()`来访问更深层级的键。 ```python # 假设我们有一个嵌套字典,用于存储不同国家城市的人口 population = {} # 假设我们要更新或添加“中国”的“北京”的人口数据 country = '中国' city = '北京' population_data = 12345678 # 使用setdefault()确保国家键存在,并初始化为一个空字典 country_dict = population.setdefault(country, {}) # 使用setdefault()确保城市键存在,并初始化为0 city_population = country_dict.setdefault(city, 0) # 更新人口数据 city_population += population_data print(population) # 输出: {'中国': {'北京': 12345678}} ``` 在这个例子中,我们首先使用`setdefault()`来确保“中国”这个键存在于`population`字典中,并将其值初始化为一个空字典。然后,我们再次使用`setdefault()`来确保在“中国”对应的字典中,“北京”这个键也存在,并将其值初始化为0(尽管在这个例子中我们直接添加了人口数据,但`setdefault()`的返回值让我们可以很方便地做进一步的计算或更新)。 #### 总结 `get()`和`setdefault()`是Python字典中非常实用的两个方法,它们在处理可能不存在的键时提供了灵活且安全的方式。`get()`方法用于安全地获取键的值,如果键不存在则返回默认值;而`setdefault()`方法则用于在键不存在时设置默认值,并返回该值,同时修改字典。两者各有千秋,在适当的场景下选择使用可以大大提高代码的效率和可读性。通过深入理解这两个方法的工作原理和应用场景,你将能够更加熟练地操作Python字典,进而在数据处理、编程任务中更加得心应手。
上一篇:
6.7 以Python 风格使用字典
下一篇:
6.7.2 使用collections.defaultdict()设置默认值
该分类下的相关小册推荐:
Python3网络爬虫开发实战(上)
实战Python网络爬虫
Python爬虫入门与实战开发(下)
Python编程轻松进阶(三)
Python甚础Django与爬虫
Python合辑4-130个字符串操作示例
Python合辑14-面向对象编程案例(下)
Python编程轻松进阶(四)
Python爬虫入门与实战开发(上)
剑指Python(万变不离其宗)
Python数据分析与挖掘实战(下)
Python合辑2-字符串常用方法