Python 中的非严格字典是指字典中可以添加任意键值对,而不必在字典定义时提前指定。这种方式相较于传统的严格字典能够更灵活地处理数据。
在 Python 中使用非严格字典有两种方式:
- 使用 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() 方法不进行修改的现象。
- 使用 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 类,我们可以轻松地创建灵活的字典对象,便于我们进行数据处理及分析。