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(<function <lambda> at 0x0000000002072E18>, {'a': defaultdict(<function <lambda> 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值