详解Python 字典默认值

  • Post category:Python

Python 字典(Dictionary)是一种无序、可变的序列类型,它以键值对的形式存储数据。字典中的元素是按照键(key)来存储和访问的。在访问字典的时候,如果键不存在,会抛出一个 KeyError 异常。为了避免这种情况的发生,Python 中提供了字典默认值(default value)的用法。本文将为您详细介绍 Python 字典默认值的使用方法。

默认值的设置

在 Python 字典中,我们可以使用 get() 方法来获取指定键对应的值。如果这个键不存在,可以设置一个默认值作为 get() 方法的第二个参数。下面是两个例子:

# 获取已存在的键对应的值
d1 = {'a': 1, 'b': 2, 'c': 3}
print(d1.get('a', 0)) # 1

# 获取不存在的键对应的值
d2 = {}
print(d2.get('a', 0)) # 0

在上面的例子中,d1 字典中已存在键 "a",因此调用 get() 方法时,会返回对应的值 1;而在 d2 字典中,不存在键 "a",因此调用 get() 方法时,会返回默认值 0

我们也可以使用字典的 setdefault() 方法来设置默认值,如果键不存在,则自动将键-值对添加到字典中。下面是一个示例:

d = {'a': 1, 'b': 2}
d.setdefault('c', 3)
print(d) # {'a': 1, 'b': 2, 'c': 3}

在上面的例子中,字典 d 中不存在键 "c",因此调用 setdefault() 方法时,会自动将键-值对 ("c", 3) 添加到字典中。

setdefault() 方法的语法如下:

dict.setdefault(key, default=None)

其中,key 表示要查找的键,default 表示如果键不存在的话,设置的默认值。如果默认值不指定,则默认为 None

defaultdict 的使用

Python 还提供了一种特殊的字典类型 defaultdict,它可以指定默认值的类型,并且在获取不存在的键时,会自动创建对应类型的默认值。下面是一个示例:

from collections import defaultdict

d = defaultdict(int)
d['a'] += 1
d['b'] += 2
print(d) # defaultdict(<class 'int'>, {'a': 1, 'b': 2,})

在上面的例子中,我们通过 defaultdict(int) 创建了一个字典 d,并对其键 "a""b" 分别进行了累加操作。由于默认值类型为 int,因此在获取不存在的键时,会创建出默认值 0 并进行累加操作。

defaultdict 构造函数中,我们需要指定默认值类型。可以指定任何可调用对象作为默认值类型,比如 listset 等等。下面是一个使用 list 作为默认值类型的示例:

d = defaultdict(list)
d['a'].append(1)
d['b'].append(2)
d['c'] = [3]
print(d) # defaultdict(<class 'list'>, {'a': [1], 'b': [2], 'c': [3]})

在上面的例子中,我们通过 defaultdict(list) 创建了一个字典 d,并对其键 "a""b" 分别进行了 append() 操作。由于默认值类型为 list,因此在获取不存在的键时,会创建出默认值 [] 并进行 append() 操作。

总结

本文主要介绍了 Python 字典默认值的使用方法,包括在 get() 方法和 setdefault() 方法中设置默认值,以及使用 defaultdict 类型创建带有默认值的字典。在实际编程中,应该根据具体情况选择适当的方法来设置默认值,以提高代码的可读性和效率。