Python字典的默认值设置技巧

文摘   2024-11-12 08:26   上海  

Python字典是一种非常灵活的数据结构,可以用来存储键值对。但是,在处理字典时,经常会遇到一个问题:如果访问一个不存在的键,会引发 KeyError。为了解决这个问题,Python 提供了几种方法来设置字典的默认值。今天我们就来详细了解一下这些技巧。

1. 使用 get 方法

get 方法是获取字典中键值对的一种安全方式。如果键不存在,它不会抛出异常,而是返回一个默认值。

# 创建一个字典
my_dict = {'apple'3'banana'5}

# 使用 get 方法获取键 'apple' 的值
print(my_dict.get('apple'))  # 输出: 3

# 使用 get 方法获取键 'orange' 的值,如果不存在则返回 0
print(my_dict.get('orange'0))  # 输出: 0

2. 使用 setdefault 方法

setdefault 方法不仅可以在键不存在时返回默认值,还可以将该键值对添加到字典中。

# 创建一个字典
my_dict = {'apple'3'banana'5}

# 使用 setdefault 方法获取键 'apple' 的值
print(my_dict.setdefault('apple'0))  # 输出: 3

# 使用 setdefault 方法获取键 'orange' 的值,如果不存在则返回 0 并添加到字典中
print(my_dict.setdefault('orange'0))  # 输出: 0
print(my_dict)  # 输出: {'apple': 3, 'banana': 5, 'orange': 0}

3. 使用 collections.defaultdict

collections.defaultdict 是一个特殊的字典子类,它可以自动为不存在的键提供一个默认值。这个默认值是由一个工厂函数提供的。

from collections import defaultdict

# 创建一个 defaultdict,工厂函数为 int
my_dict = defaultdict(int)

# 访问不存在的键 'apple'
print(my_dict['apple'])  # 输出: 0

# 添加一些键值对
my_dict['banana'] = 5
print(my_dict['banana'])  # 输出: 5

# 访问另一个不存在的键 'orange'
print(my_dict['orange'])  # 输出: 0

# 打印整个字典
print(my_dict)  # 输出: defaultdict(<class 'int'>, {'apple': 0, 'banana': 5, 'orange': 0})

4. 使用 dict.setdefaultcollections.defaultdict 的区别

  • dict.setdefault 只在第一次访问不存在的键时设置默认值,之后再次访问该键时不会再调用工厂函数。
  • collections.defaultdict 每次访问不存在的键时都会调用工厂函数来生成默认值。

5. 高级技巧:使用 lambda 函数作为工厂函数

有时候,我们需要更复杂的默认值生成逻辑,可以使用 lambda 函数作为工厂函数。

from collections import defaultdict

# 创建一个 defaultdict,工厂函数为 lambda 表达式
my_dict = defaultdict(lambda'Default Value')

# 访问不存在的键 'apple'
print(my_dict['apple'])  # 输出: Default Value

# 访问另一个不存在的键 'banana'
print(my_dict['banana'])  # 输出: Default Value

# 打印整个字典
print(my_dict)  # 输出: defaultdict(<function <lambda> at 0x7f7c3a3b7ee0>, {'apple': 'Default Value', 'banana': 'Default Value'})

6. 实战案例:统计单词出现次数

假设我们有一个文本文件,需要统计每个单词出现的次数。我们可以使用 collections.defaultdict 来实现这个功能。

from collections import defaultdict
import re

# 读取文本文件
with open('example.txt''r'as file:
    text = file.read()

# 使用正则表达式分割单词
words = re.findall(r'\w+', text.lower())

# 创建一个 defaultdict,工厂函数为 int
word_count = defaultdict(int)

# 统计每个单词出现的次数
for word in words:
    word_count[word] += 1

# 打印每个单词及其出现次数
for word, count in word_count.items():
    print(f'{word}{count}')

总结

本文介绍了 Python 字典中设置默认值的几种方法:1. 使用 get 方法获取键值对,如果键不存在则返回默认值。2. 使用 setdefault 方法获取键值对,如果键不存在则返回默认值并将其添加到字典中。3. 使用 collections.defaultdict 自动为不存在的键提供默认值。4. 使用 lambda 函数作为工厂函数生成更复杂的默认值。5. 通过一个实战案例展示了如何使用 collections.defaultdict 统计单词出现次数。

好了,今天的分享就到这里了,我们下期见。如果本文对你有帮助,请动动你可爱的小手指点赞、转发、在看吧!

付费合集推荐

Python编程基础

Python办公自动化-Excel

微信公众号批量上传发布系统

文末福利

公众号消息窗口回复“编程资料”,获取Python编程、人工智能、爬虫等100+本精品电子书。

精品系统

微信公众号批量上传发布系统

关注我👇,精彩不再错过


手把手PythonAI编程
分享与人工智能和python编程语言相关的笔记和项目经历。
 最新文章