1. Python dict的基本操作
1.1 创建字典
Python中创建字典可以使用花括号{},也可以使用内置函数dict()。
# 将两个列表转成字典,zip函数可以将两个列表打包成一个元组的列表
keys = ['a', 'b', 'c']
vals = [1, 2, 3]
d = dict(zip(keys, vals))
print(d) # {'a': 1, 'b': 2, 'c': 3}
1.2 字典的基本操作
字典是无序的,可以通过键值对进行访问、添加、删除和更新元素。
# 访问元素
print(d['a']) # 1
# 添加元素
d['d'] = 4
print(d) # {'a': 1, 'b': 2, 'c': 3, 'd': 4}
# 删除元素
del d['d']
print(d) # {'a': 1, 'b': 2, 'c': 3}
# 更新元素
d['a'] = 0
print(d) # {'a': 0, 'b': 2, 'c': 3}
1.3 遍历字典
字典可以使用for循环遍历键、值或者键值对。
# 遍历键
for key in d:
print(key)
# 遍历值
for val in d.values():
print(val)
# 遍历键值对
for key, val in d.items():
print(key, val)
2. defaultdict的使用
2.1 defaultdict介绍
defaultdict是Python内置库collections中的一个类。默认字典是一个字典,它为字典中所有不存在的键提供了默认值。
2.2 创建defaultdict
创建defaultdict比创建普通的字典简单,只需要传递一个函数参数来初始化默认值。
from collections import defaultdict
# 初始化默认值为0的defaultdict
dd = defaultdict(int)
dd['a'] = 1
print(dd['a']) # 1
print(dd['b']) # 0
# 初始化默认值为list的defaultdict
dd = defaultdict(list)
dd['a'].append(1)
print(dd['a']) # [1]
print(dd['b']) # []
可以看到,如果访问字典中不存在的键,defaultdict会返回预设的默认值。
2.3 defaultdict实现词频统计
defaultdict可以方便的实现词频统计。
text = 'Python is an easy programming language to learn. It is widely used in various fields, such as data science, artificial intelligence, and web development.'
words = text.split()
freq = defaultdict(int)
for word in words:
freq[word] += 1
for word, count in freq.items():
print(word, count)
可以看到,defaultdict实现词频统计的代码非常简洁。
3. 使用dict和defaultdict实现多级字典
3.1 创建多级字典
多级字典是指嵌套多层的字典,可以使用dict或者defaultdict来实现。
3.1.1 使用dict创建多级字典
d = {}
d['a'] = {}
d['a']['b'] = 1
print(d) # {'a': {'b': 1}}
3.1.2 使用defaultdict创建多级字典
dd = lambda: defaultdict(dd)
d = dd()
d['a']['b']['c'] = 2
print(d) # {'a': {'b': {'c': 2}}}
使用defaultdict创建多级字典的代码更加简洁,因为不需要为每个键初始化一个空字典。
3.2 访问多级字典
可以通过多次使用[key]的方式来访问多级字典。
print(d['a']['b']['c']) # 2
3.3 更新多级字典
通过多次使用[key]的方式来更新多级字典。
d['a']['b']['d'] = 3
print(d) # {'a': {'b': {'c': 2, 'd': 3}}}
3.4 遍历多级字典
通过for循环嵌套使用items()方法来遍历多级字典。
for key1, val1 in d.items():
for key2, val2 in val1.items():
for key3, val3 in val2.items():
print(key1, key2, key3, val3)
以上就是Python dict和defaultdict使用的详细介绍,可以看到,使用defaultdict可以非常方便地实现一些数据结构和算法的操作。