collections-----容器数据类型

ChainMap 对象

链映射,可以看作一类特殊的字典列表。

from collections import ChainMap

# 创建链式映射,参数默认为1个空字典
cm = ChainMap({'a': 1}, {'a': 2}, {'b': 3})

# 返回字典列表,按创建时的参数顺序排列
print('\nmaps:\n', cm.maps)

# 返回所有的键,按创建时的参数逆序排列,不重复
print('\nlist(ChainMap):\n', list(cm))

# 逆序遍历,按搜索到的key排列,key的值不断更新为最后搜索到的值
print('\nitems():\n', list(cm.items()))
print(dict(cm))

# 返回新的ChainMap类,在链头插入新映射
print('\nnew_child():\n', cm.new_child({'c': 4}))

# 返回新的ChainMap类,删去链头映射
print('\nparents:\n', cm.parents)

# 更新时只更新链中第一个映射
cm['a'] = 0
cm['b'] = 4
cm['c'] = 5
print('update:\n', cm)

# 删除时只在链的第一个映射中删除,无法删除后续映射
del cm['a']
print('\ndelete:\n', cm)
try:
    print('\ndelete again:')
    del cm['a']
except:
    print('Can not delete posterior map keys.')

# 顺序查询,返回第一个查到的值
print('\nSearch:')
print("cm['a']:", cm['a'])
print("cm['b']:", cm['b'])

输出:

maps:
 [{'a': 1}, {'a': 2}, {'b': 3}]

list(ChainMap):
 ['b', 'a']

items():
 [('b', 3), ('a', 1)]
{'b': 3, 'a': 1}

new_child():
 ChainMap({'c': 4}, {'a': 1}, {'a': 2}, {'b': 3})

parents:
 ChainMap({'a': 2}, {'b': 3})
update:
 ChainMap({'a': 0, 'b': 4, 'c': 5}, {'a': 2}, {'b': 3})

delete:
 ChainMap({'b': 4, 'c': 5}, {'a': 2}, {'b': 3})

delete again:
Can not delete posterior map keys.

Search:
cm['a']: 2
cm['b']: 4

Counter 计数器

deque 双向队列

defaultdict 默认值字典

namedtuple 命名元组

OrderedDict 有序字典

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值