下面是对 "Python dict和defaultdict使用实例解析" 的详细讲解:
1. Python字典
Python中的字典是一种可变的数据类型,它可以存储键值对,其中的键是唯一的、不可重复的,而值可以是任何数据类型,包括另一个字典。
我们可以使用以下方式创建Python字典:
scores = {'Tom': 85, 'John': 92, 'Alex': 78}
这个字典包含三个键值对,分别对应Tom的分数为85分、John的分数为92分和Alex的分数为78分。
当然,我们也可以使用dict()函数来创建字典:
scores = dict(Tom=85, John=92, Alex=78)
这个字典和上面的完全等价。
1.1 Python字典方法
字典是一个有自己特殊方法的对象,以下介绍几个学习Python字典时用得比较多的方法:
1.1.1 获取字典中的元素
我们可以使用key获取字典中的value。
scores = {'Tom': 85, 'John': 92, 'Alex': 78}
print(scores['Tom'])
输出:
85
如果我们使用了不存在的key来获取value,会抛出KeyError异常,可以使用get()方法避免这种情况:
scores = {'Tom': 85, 'John': 92, 'Alex': 78}
print(scores.get('Mary'))
输出:
None
上面的代码没有抛出KeyError异常,并返回了None。
1.1.2 添加和修改字典中的元素
我们可以使用key向字典中添加或修改元素:
scores = {'Tom': 85, 'John': 92, 'Alex': 78}
scores['Mary'] = 88
print(scores)
输出:
{'Tom': 85, 'John': 92, 'Alex': 78, 'Mary': 88}
如果该key已经存在,则会覆盖原来的value。
1.1.3 字典的遍历
我们可以使用for循环遍历字典中的键值对:
scores = {'Tom': 85, 'John': 92, 'Alex': 78}
for name in scores:
print(name, scores[name])
输出:
Tom 85
John 92
Alex 78
也可以使用items()方法来获取所有的键值对:
scores = {'Tom': 85, 'John': 92, 'Alex': 78}
for name, score in scores.items():
print(name, score)
输出:
Tom 85
John 92
Alex 78
1.2 Python字典的问题
Python字典有一个问题,当访问一个不存在的键时会抛出KeyError异常,可以使用try except解决,或者使用collections模块中的defaultdict类,下面我们来介绍这个类的使用。
2. defaultdict类
defaultdict类是一个字典类的子类,和字典不同,当一个不存在的键被访问时,不会抛出KeyError异常,而是返回一个默认值。在创建defaultdict类时,需要提供一个工厂函数,用于生成默认值。
下面是defaultdict类的语法:
class collections.defaultdict([default_factory[, ...]])
其中default_factory参数可以是任意类型的对象,用于生成默认值。
我们来看一个实例:
from collections import defaultdict
# 定义默认值为int类型的0
dd = defaultdict(int)
dd['one'] = 1
dd['two'] = 2
print(dd['three'])
输出:
0
可以看到,当访问不存在的键时,返回了默认值0。
下面再来看一个更复杂的例子:
from collections import defaultdict
s = [('Tom', 85), ('John', 92), ('Alex', 78), ('Tom', 90)]
d = defaultdict(list)
for k, v in s:
d[k].append(v)
print(d)
这个例子中,我们将一个包含姓名和分数的元组列表转换为一个字典,其中每个姓名对应的分数以列表的形式存储。
输出:
defaultdict(<class 'list'>, {'Tom': [85, 90], 'John': [92], 'Alex': [78]})
可以看到,同名的分数被存储在了同一个列表中。
3. 总结
Python中的字典是一种可变的数据类型,用于存储键值对。但当访问一个不存在的键时会抛出KeyError异常,可以使用try except解决,或者使用collections模块中的defaultdict类,这个类可以设置默认值,当访问不存在的键时返回默认值,非常方便。希望本篇文章能对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python dict和defaultdict使用实例解析 - Python技术站