基本定义
(1)类似于C++的STL中的map,可以自定义字典的value类型,比如 dict = defaultdict(list),dict = defaultdict(int)
List类型
(1)自定义字典的value为列表(list),当访问一个key不存在时,将会为这个key自动创建一个新的list,大小为空
(2)当访问一个存在的key时,将会返回那个已经存在的list,此时可以进行append()等操作
from collections import defaultdict
s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
d = defaultdict(list) # 新建一个以list为默认value的字典
for k, v in s: # 保存每个水果中的数字
d[k].append(v)
sorted(d.items()) # 按照字典的key排序
print(d.items())
# [('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]
Int类型
(1)自定义字典的value为整数(int),当访问一个key不存在时,将会为这个key自动创建一个新的int,值为0
(2)当访问一个存在的key时,将会返回那个已经存在的int,此时可以进行add等操作
s = 'mississippi' # 一个多个重复字符的字符串
d = defaultdict(int) # 新建一个以list为默认value的字典
for k in s: # 保存每个字符出现的个数,注意这里的每个字符初始个数为0
d[k] += 1
sorted(d.items()) # 按照字典的key排序
print(d.items())
# [('i', 4), ('m', 1), ('p', 2), ('s', 4)]
Set类型
(1)自定义字典的value为集合(set),当访问一个key不存在时,将会为这个key自动创建一个新的set,大小为空
(2)当访问一个存在的key时,将会返回那个已经存在的set,此时可以进行add等操作
# set
s = [('red', 1), ('blue', 2), ('red', 3), ('blue', 4), ('red', 1), ('blue', 4)]
d = defaultdict(set) # 新建一个以set为默认value的字典
for k, v in s: # set中只保存不重复的元素
d[k].add(v)
sorted(d.items()) # 按照字典的key排序
print(d.items())
# [('blue', {2, 4}), ('red', {1, 3})]
全部示例
# list
from collections import defaultdict
s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
d = defaultdict(list) # 新建一个以list为默认value的字典
for k, v in s: # 保存每个水果中的数字
d[k].append(v)
sorted(d.items()) # 按照字典的key排序
print(d.items())
# [('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]
# int
s = 'mississippi' # 一个多个重复字符的字符串
d = defaultdict(int) # 新建一个以list为默认value的字典
for k in s: # 保存每个字符出现的个数,注意这里的每个字符初始个数为0
d[k] += 1
sorted(d.items()) # 按照字典的key排序
print(d.items())
# [('i', 4), ('m', 1), ('p', 2), ('s', 4)]
# set
s = [('red', 1), ('blue', 2), ('red', 3), ('blue', 4), ('red', 1), ('blue', 4)]
d = defaultdict(set) # 新建一个以set为默认value的字典
for k, v in s: # set中只保存不重复的元素
d[k].add(v)
sorted(d.items()) # 按照字典的key排序
print(d.items())
# [('blue', {2, 4}), ('red', {1, 3})]