Ordereddict

把 这个和 sorted 使用的栗子 也顺便看了!

class collections.abc.MutableMapping

继承类必须实现的 Abstract Methods 有:

__getitem__, __setitem__, __delitem__, __iter__, __len__

class MutableMapping(Mapping):

__slots__ = ()

"""A MutableMapping is a generic container for associating

key/value pairs.

This class provides concrete generic implementations of all

methods except for __getitem__, __setitem__, __delitem__,

__iter__, and __len__.

"""

@abstractmethod

def __setitem__(self, key, value):

raise KeyError

@abstractmethod

def __delitem__(self, key):

raise KeyError

__marker = object()

def pop(self, key, default=__marker):

'''D.pop(k[,d]) -> v, remove specified key and return the corresponding value.

If key is not found, d is returned if given, otherwise KeyError is raised.

'''

try:

value = self[key]

except KeyError:

if default is self.__marker:

raise

return default

else:

del self[key]

return value

def popitem(self):

'''D.popitem() -> (k, v), remove and return some (key, value) pair

as a 2-tuple; but raise KeyError if D is empty.

'''

try:

key = next(iter(self))

except StopIteration:

raise KeyError

value = self[key]

del self[key]

return key, value

def clear(self):

'D.clear() -> None. Remove all items from D.'

try:

while True:

self.popitem()

except KeyError:

pass

def update(*args, **kwds):

''' D.update([E, ]**F) -> None. Update D from mapping/iterable E and F.

If E present and has a .keys() method, does: for k in E: D[k] = E[k]

If E present and lacks .keys() method, does: for (k, v) in E: D[k] = v

In either case, this is followed by: for k, v in F.items(): D[k] = v

'''

if not args:

raise TypeError("descriptor 'update' of 'MutableMapping' object "

"needs an argument")

self, *args = args

if len(args) > 1:

raise TypeError('update expected at most 1 arguments, got %d' %

len(args))

if args:

other = args[0]

if isinstance(other, Mapping):

for key in other:

self[key] = other[key]

elif hasattr(other, "keys"):

for key in other.keys():

self[key] = other[key]

else:

for key, value in other:

self[key] = value

for key, value in kwds.items():

self[key] = value

def setdefault(self, key, default=None):

'D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D'

try:

return self[key]

except KeyError:

self[key] = default

return default

MutableMapping.register(dict)

对应父类 Mapping 的源码

class Mapping(Collection):

__slots__ = ()

"""A Mapping is a generic container for associating key/value

pairs.

This class provides concrete generic implementations of all

methods except for __getitem__, __iter__, and __len__.

"""

@abstractmethod

def __getitem__(self, key):

raise KeyError

def get(self, key, default=None):

'D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None.'

try:

return self[key]

except KeyError:

return default

def __contains__(self, key):

try:

self[key]

except KeyError:

return False

else:

return True

def keys(self):

"D.keys() -> a set-like object providing a view on D's keys"

return KeysView(self)

def items(self):

"D.items() -> a set-like object providing a view on D's items"

return ItemsView(self)

def values(self):

"D.values() -> an object providing a view on D's values"

return ValuesView(self)

def __eq__(self, other):

if not isinstance(other, Mapping):

return NotImplemented

return dict(self.items()) == dict(other.items())

__reversed__ = None

Mapping.register(mappingproxy)

class KeysView(MappingView, Set):

__slots__ = ()

@classmethod

def _from_iterable(self, it):

return set(it)

def __contains__(self, key):

return key in self._mapping

def __iter__(self):

yield from self._mapping

KeysView.register(dict_keys)

class MappingView(Sized):

__slots__ = '_mapping',

def __init__(self, mapping):

self._mapping = mapping

def __len__(self):

return len(self._mapping)

def __repr__(self):

return '{0.__class__.__name__}({0._mapping!r})'.format(self)

参考

python documentation: collections.abc

python documentation: collections

collections python_python: collections相关推荐

  1. Python标准库——collections模块的Counter类

    更多16 最近在看一本名叫<Python Algorithm: Mastering Basic Algorithms in the Python Language>的书,刚好看到提到这个C ...

  2. Java记录 -62- java.util.Collections

    在学数组的时候,JDK为我们提供了一个Arrays类,该类提供了许多静态方法来操作数组. 同时针对集合类也提供了一个Collections类,同样也提供了许多静态方法来对集合进行操作. Collect ...

  3. collections模块简介

    collections模块简介 除python提供的内置数据类型(int.float.str.list.tuple.dict)外,collections模块还提供了其他数据类型,使用如下功能需先导入c ...

  4. python内置collections模块的使用

    python内置collections模块的使用 文章目录: 一.collections模块说明 1.查看collections模块的定义路径 2.查看collections文档介绍信息 3.查看co ...

  5. python dict根据value找对应的key_一个不得不了解的Python库——collections

    基本介绍 Python拥有一些内置的数据类型,比如str, int, list, tuple, dict等, collections模块在这些内置数据类型的基础上,提供了几个额外的数据类型,如下.这些 ...

  6. java arraycollection_Java集合(三)--Collection、Collections和Arrays

    Collection: Collection是集合类的顶级接口,提供了对集合对象进行基本操作的通用接口方法.Collection接口的意义是为各种具体的集合提供了最大化 的统一操作方式,其直接继承接口 ...

  7. python内建集合模块collections功能,计数,有序,双向队列

    一.官方介绍 这个模块实现了特定目标的容器,以提供Python标准内建容器 dict , list , set , 和 tuple 的替代选择. namedtuple() 创建命名元组子类的工厂函数 ...

  8. Python教程:collections的deque()方法

    创建双向队列 import collections d = collections.deque() append(往右边添加一个元素) import collections d = collectio ...

  9. 四种高性能数据类型,Python collections助你优化代码、简洁任务

    在这篇文章中,机器学习工程师 George Seif 介绍了 Python collections 模块最受欢迎的四种数据类型以及它们各自的使用方法.这些数据类型可以对代码进行优化,进而实现更简洁的任 ...

最新文章

  1. GPU指令集技术分析
  2. 异步爬虫(爬取小说30秒12MB!)Python实现
  3. SerialPort.DataReceived 事件
  4. 你知道socket.io中connect事件和connection事件的区别吗?
  5. 字典类型处理函数及方法实例解析
  6. PMP之财务测量指标
  7. HDU-1003 Max Sum(动态规划)
  8. python银行排队系统_python-我需要基于Web的系统的消息/排队解决...
  9. hpux 11.11 连接HDS 存储,采用HDLM管理带来的麻烦,需重启。
  10. 安装jdk配置环境变量JAVA_HOME不起作用
  11. mysql5.0查询表_Mysql5.0查询表结构 | 学步园
  12. OracleLinux6的安装
  13. 支持对抗样本防御的AI加速器架构设计
  14. PHP利用有道智云提供的API接口来翻译字符串
  15. 风行天下!翔升N61S智能主板低价上市
  16. SV--随机约束(一)
  17. 我和数据标注的那些事儿
  18. 2019.7学习总结-目标检测-Python+pytorch
  19. 保卫城市消费券安全,从这些做起
  20. MinIO历史版本下载

热门文章

  1. 蓝牙PSKEY的调整
  2. 设置tomcat服务为80端口,tomcat虚拟主机,tomcat日志
  3. 《Flink官方文档》示例总览
  4. SaltStck 搭建Web集群运用示例 (一)
  5. 专车降价滴滴快车使命终结?
  6. Web页面布局方式小结
  7. poj1988(判断一个结点下面有多少个结点,推荐)
  8. PortSentry
  9. 编写有效的事条指导原则
  10. 剑指offer(Java实现) 求1+2+3+…+n