基本定義
(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})]