collections python_python: collections
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相关推荐
- Python标准库——collections模块的Counter类
更多16 最近在看一本名叫<Python Algorithm: Mastering Basic Algorithms in the Python Language>的书,刚好看到提到这个C ...
- Java记录 -62- java.util.Collections
在学数组的时候,JDK为我们提供了一个Arrays类,该类提供了许多静态方法来操作数组. 同时针对集合类也提供了一个Collections类,同样也提供了许多静态方法来对集合进行操作. Collect ...
- collections模块简介
collections模块简介 除python提供的内置数据类型(int.float.str.list.tuple.dict)外,collections模块还提供了其他数据类型,使用如下功能需先导入c ...
- python内置collections模块的使用
python内置collections模块的使用 文章目录: 一.collections模块说明 1.查看collections模块的定义路径 2.查看collections文档介绍信息 3.查看co ...
- python dict根据value找对应的key_一个不得不了解的Python库——collections
基本介绍 Python拥有一些内置的数据类型,比如str, int, list, tuple, dict等, collections模块在这些内置数据类型的基础上,提供了几个额外的数据类型,如下.这些 ...
- java arraycollection_Java集合(三)--Collection、Collections和Arrays
Collection: Collection是集合类的顶级接口,提供了对集合对象进行基本操作的通用接口方法.Collection接口的意义是为各种具体的集合提供了最大化 的统一操作方式,其直接继承接口 ...
- python内建集合模块collections功能,计数,有序,双向队列
一.官方介绍 这个模块实现了特定目标的容器,以提供Python标准内建容器 dict , list , set , 和 tuple 的替代选择. namedtuple() 创建命名元组子类的工厂函数 ...
- Python教程:collections的deque()方法
创建双向队列 import collections d = collections.deque() append(往右边添加一个元素) import collections d = collectio ...
- 四种高性能数据类型,Python collections助你优化代码、简洁任务
在这篇文章中,机器学习工程师 George Seif 介绍了 Python collections 模块最受欢迎的四种数据类型以及它们各自的使用方法.这些数据类型可以对代码进行优化,进而实现更简洁的任 ...
最新文章
- GPU指令集技术分析
- 异步爬虫(爬取小说30秒12MB!)Python实现
- SerialPort.DataReceived 事件
- 你知道socket.io中connect事件和connection事件的区别吗?
- 字典类型处理函数及方法实例解析
- PMP之财务测量指标
- HDU-1003 Max Sum(动态规划)
- python银行排队系统_python-我需要基于Web的系统的消息/排队解决...
- hpux 11.11 连接HDS 存储,采用HDLM管理带来的麻烦,需重启。
- 安装jdk配置环境变量JAVA_HOME不起作用
- mysql5.0查询表_Mysql5.0查询表结构 | 学步园
- OracleLinux6的安装
- 支持对抗样本防御的AI加速器架构设计
- PHP利用有道智云提供的API接口来翻译字符串
- 风行天下!翔升N61S智能主板低价上市
- SV--随机约束(一)
- 我和数据标注的那些事儿
- 2019.7学习总结-目标检测-Python+pytorch
- 保卫城市消费券安全,从这些做起
- MinIO历史版本下载