Python collections学习

Python 在内置的数据类型的基础上, 在collections模块中提供了几个额外的数据类型. 分别是
- defaultdict
- namedtuple
- deque
- Counter
- UserDict
- UserList
- UserString
- OrderedDict
- ChainMap

defaultdict

重点关注这一句:

The first argument provides the initial value for the default_factory attribute; it defaults to None. All remaining arguments are treated the same as if they were passed to the dict constructor, including keyword arguments.

defaultdict 的第一个参数为默认的工厂方法. 使用示例:

s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
d = defaultdict(list)
for k, v in s:
    d[k].append(v)

输出

 defaultdict(<class 'list'>, {'yellow': [1, 3], 'blue': [2, 4], 'red': [1]})

另一个常见的用法是, 当对一个键进行嵌套赋值时, 会触发keyError异常。 defaultdict可以解决这个问题

Question

s = {}
s['a']['b'] = 2

输出

KeyError: ‘a’

Solution

d = lambda: collections.defaultdict(d)
s = d()
s['a']['b'] = 'c'
print(s)

输出


defaultdict( at 0x0000000002072E18>, {'a': defaultdict( at 0x0000000002072E18>, {'b': 'c'})})

namedtuple

把元组变成一个针对简单任务的容器。你不必使用整数索引来访问一个namedtuples的数据。你可以像字典(dict)一样访问namedtuples,但namedtuples是不可变的。

“`Python
def namedtuple(typename, field_names, *, verbose=False, rename=False, module=None)

deque

双端队列.

Counter

计数器, 可以针对某项数据进行计数.

OrderedDict

Python中的字典本身是无序的, 当需要保持字典有序的时候, 可以使用OrderedDict

你可能感兴趣的:(python,Collections)