Python dict和defaultdict使用实例解析

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可以非常方便地实现一些数据结构和算法的操作。

后端开发标签