Python附带一个模块,它包含许多容器数据类型,名字叫作collections 。我们将讨论它的作用和用法。 我们将讨论的是: - defaultdict
- counter
- deque
- namedtuple
- enum.Enum (包含在Python 3.4以上)
defaultdict我个人使用defaultdict 较多,与dict 类型不同,你不需要检查key是否存在,所以我们能这样做: from collections import defaultdict
colours = (
('Yasoob', 'Yellow'),
('Ali', 'Blue'),
('Arham', 'Green'),
('Ali', 'Black'),
('Yasoob', 'Red'),
('Ahmed', 'Silver'),
)
favourite_colours = defaultdict(list)
for name, colour in colours:
favourite_colours[name].append(colour)
print(favourite_colours)
运行输出
另一种重要的是例子就是:当你在一个字典中对一个键进行嵌套赋值时,如果这个键不存在,会触发keyError 异常。 defaultdict 允许我们用一个聪明的方式绕过这个问题。 首先我分享一个使用dict 触发KeyError 的例子,然后提供一个使用defaultdict 的解决方案。 问题: some_dict = {}
some_dict['colours']['favourite'] = "yellow"
解决方案: import collections
tree = lambda: collections.defaultdict(tree)
some_dict = tree()
some_dict['colours']['favourite'] = "yellow"
你可以用json.dumps 打印出some_dict ,例如: import json
print(json.dumps(some_dict))
|