Python 使用非严格字典规则

  • Post category:Python

Python 中的非严格字典是指字典中可以添加任意键值对,而不必在字典定义时提前指定。这种方式相较于传统的严格字典能够更灵活地处理数据。

在 Python 中使用非严格字典有两种方式:

  1. 使用 dict 类的 setdefault() 方法

setdefault() 方法的语法如下:

dict.setdefault(key,default=None)

其中,key 为要设置的键名,default 为该键初始值(默认值为None)。如果该键名在字典中存在,则返回对应的值;如果不存在,则在字典中添加该键,并将对应的值设置为 default。

示例代码:

user_dict = {}
user_dict.setdefault('name', 'Unknown')
user_dict.setdefault('age', 18)
user_dict.setdefault('gender', 'Male')
print(user_dict)  # 输出 {'name': 'Unknown', 'age': 18, 'gender': 'Male'}

# 如果键名重复,则返回原来的值,不进行修改
user_dict.setdefault('name', 'Tom')
print(user_dict)  # 输出 {'name': 'Unknown', 'age': 18, 'gender': 'Male'}

在上面的示例中,我们使用了 setdefault() 方法为字典添加了三个键值对,其中 ‘name’ 键对应的值为 ‘Unknown’,’age’ 键对应的值为 18,’gender’ 键对应的值为 ‘Male’。同时,我们还演示了重复添加键值对时,setdefault() 方法不进行修改的现象。

  1. 使用 collections 模块的 defaultdict 类

defaultdict 是 collections 模块中的一个类,它在创建字典时可以指定一个默认值,当键名不存在时自动添加,并返回该默认值。

defaultdict 的语法如下:

collections.defaultdict([default_factory[, ...]])

其中,default_factory 表示默认值的类型。当访问一个不存在的键时,会自动创建该键并将其值设置为 default_factory 的返回值。

示例代码:

import collections

# 创建一个默认值为列表的 defaultdict 对象
city_dict = collections.defaultdict(list)

# 在 city_dict 中添加一个键值对,键为 'China',值为 ['Beijing']
city_dict['China'].append('Beijing')
print(city_dict)  # 输出 defaultdict(<class 'list'>, {'China': ['Beijing']})

# 在 city_dict 中添加另一个键值对,键为 'USA',值为空列表 []
print(city_dict['USA'])  # 输出 []
print(city_dict)  # 输出 defaultdict(<class 'list'>, {'China': ['Beijing'], 'USA': []})

在上面的示例中,我们使用了 defaultdict 创建了一个默认值为列表的字典 city_dict。然后,我们向 city_dict 中添加了键为 ‘China’,值为 [‘Beijing’] 的键值对,并打印输出了字典的内容。接着,我们尝试访问了一个不存在的键 ‘USA’,defaultdict 自动将其添加到字典中,并将其值设置为空列表。最后,我们再次打印输出了字典的内容,可以看到 ‘USA’ 键已经被添加到字典中了。

通过上述两个示例,我们详细讲解了 Python 中使用非严格字典的方法。通过 setdefault() 方法或 defaultdict 类,我们可以轻松地创建灵活的字典对象,便于我们进行数据处理及分析。