Python字典的变种 OrderDict、ChainMap、Counter

在collection模块中,除了defaultdict之外,还有不同的映射类型。

 

OrderDict 有序字典:

特殊的popitem方法默认删除字典的最后一个元素,如果是odict.popitem(last=False)调用,会删除并返回第一个添加的元素

 

ChainMap 合并多个字典(映射对象)  仅python3可用:

假如你有如下两个字典,在两个字典中执行查找操作(比如先从 a 中找,如果找不到再在 b 中找)。 一个非常简单的解决方案就是使用 collections 模块中的 ChainMap 类。比如:

这里并不是产生了一个新的字典,ChainMap内部产生了一个列表,把字典放进去遍历处理。这样的好处是没有生成新的字典,不会浪费内存。

如果遇到重复的键,已第一个为准返回

from collections import ChainMap

a = {'x': 1, 'z': 3}
b = {'y': 2, 'z': 4}

c = ChainMap(a, b) 
print(c.get('x'))
print(c.get('z'))
打印
1
3

ChainMap 常用于python的变量查询规则:

from collections import ChainMap
import builtins
lookup = ChainMap(globals(), locals(), vars(builtins))
print(lookup)
打印
ChainMa
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值