您的位置:首页 > 其它

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

jerrism 2020-05-11 04:13 253 查看 https://blog.csdn.net/jerrism/

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 有序字典

jerrism 原创文章 16获赞 1访问量 458 关注 私信
标签: