python 字典 setdefault()和get()方法比较详解
在Python编程语言中,字典是一种非常重要的数据结构,它以键值对的形式存储数据,提供了高效的查找和访问机制。在处理字典时,我们经常会遇到两种常用的成员操作方法:`setdefault()` 和 `get()`。这两个方法都可以用来查询字典中的键值,但是它们在处理不存在的键时有不同的行为。 `setdefault()` 方法允许我们尝试获取字典中指定键的值。如果键存在,它将返回对应的值;如果键不存在,`setdefault()` 不仅会返回一个默认值,还会将该键与默认值添加到字典中。默认情况下,`default=None`,但你可以传递任意值作为默认值。例如: ```python count1 = {} for char in message: count1.setdefault(char, 0) count1[char] += 1 ``` 在上面的代码中,`setdefault(char, 0)` 确保了即使字符第一次出现,`count1` 字典也会为该字符创建一个计数器并初始化为0。 相对地,`get()` 方法同样用于尝试获取字典中的值,但它不会修改字典。如果键不存在,`get()` 将返回你提供的默认值(默认是 `None`)。例如: ```python count2 = {} for char in message: count2[char] = count2.get(char, 0) + 1 ``` 在这个例子中,`get(char, 0)` 用于获取字符的计数,如果字符尚未出现,则返回0。 扩展到更复杂的场景,当我们需要为不存在的键创建一个列表时,可以使用 `setdefault()` 或 `defaultdict`。`defaultdict` 是 Python `collections` 模块提供的一种字典子类,它允许你指定一个函数来提供默认值。这个函数将决定当键不存在时返回的默认值的类型。例如: ```python # 使用 setdefault() result = {} data = [("p", 1), ("p", 2), ("p", 3), ("h", 1), ("h", 2), ("h", 3)] for (key, value) in data: result.setdefault(key, []).append(value) # 使用 defaultdict from collections import defaultdict result = defaultdict(list) data = [("p", 1), ("p", 2), ("p", 3), ("h", 1), ("h", 2), ("h", 3)] for (key, value) in data: result[key].append(value) ``` 在这两个例子中,`setdefault()` 和 `defaultdict` 都确保了在键不存在时为每个新键创建一个空列表,从而允许我们将值追加到列表中。 `setdefault()` 和 `get()` 都是处理字典中键值对的好工具,但它们各有侧重。`setdefault()` 更适合在访问字典时同时可能需要添加新键值对的情况,而 `get()` 主要是用于安全地获取字典中的值,避免KeyError异常。`defaultdict` 提供了一种更简洁的方式,尤其是当你需要根据键类型动态创建默认值时,如列表、集合等。了解这些方法的区别和用法,可以帮助你在编写Python代码时更加高效和灵活。
- 粉丝: 6
- 资源: 942
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助