Collections
来源:互联网 发布:冷核聚变知乎 编辑:程序博客网 时间:2024/06/07 10:57
namedtuple:
>>> from collections import namedtuple>>> Point = namedtuple('Point', ['x', 'y'])>>> p = Point(1, 2)>>> p.x1>>> p.y2
deque:
deque是为了高效实现插入和删除操作的双向列表,适合用于队列和栈:
>>> from collections import deque>>> q = deque(['a', 'b', 'c'])>>> q.append('x')>>> q.appendleft('y')>>> qdeque(['y', 'a', 'b', 'c', 'x'])
defaultdict:
使用dict
时,如果引用的Key不存在,就会抛出KeyError
。如果希望key不存在时,返回一个默认值,就可以用defaultdict
:
>>> from collections import defaultdict>>> dd = defaultdict(lambda: 'N/A')>>> dd['key1'] = 'abc'>>> dd['key1'] # key1存在'abc'>>> dd['key2'] # key2不存在,返回默认值'N/A'
注意默认值是调用函数返回的,而函数在创建defaultdict
对象时传入。
除了在Key不存在时返回默认值,defaultdict
的其他行为跟dict
是完全一样的。
OrderedDict:
使用dict
时,Key是无序的。在对dict
做迭代时,我们无法确定Key的顺序。
如果要保持Key的顺序,可以用OrderedDict
:
>>> from collections import OrderedDict>>> d = dict([('a', 1), ('b', 2), ('c', 3)])>>> d # dict的Key是无序的{'a': 1, 'c': 3, 'b': 2}>>> od = OrderedDict([('a', 1), ('b', 2), ('c', 3)])>>> od # OrderedDict的Key是有序的OrderedDict([('a', 1), ('b', 2), ('c', 3)])
注意,OrderedDict
的Key会按照插入的顺序排列,不是Key本身排序
Counter:
Counter
是一个简单的计数器,例如,统计字符出现的个数:
>>> from collections import Counter>>> c = Counter()>>> for ch in 'programming':... c[ch] = c[ch] + 1...>>> cCounter({'g': 2, 'm': 2, 'r': 2, 'a': 1, 'i': 1, 'o': 1, 'n': 1, 'p': 1})
Counter
实际上也是dict
的一个子类,上面的结果可以看出,字符'g'
、'm'
、'r'
各出现了两次,其他字符各出现了一次。
阅读全文
0 0
- Collections
- Collections
- Collections
- collections
- Collections
- COLLECTIONS
- Collections
- Collections
- collections
- Collections
- Collections
- collections
- Collections
- Collections
- collections
- Collections
- Collections
- collections
- Map、Set、List、Queue、Stack的特点与用法
- 零售快消品B2B“货圈全”产品分析报告
- react-native imageButton 可设置默认图片,避免加载失败空白
- Java]NIO:使用Channel、Charset(字符集)、使用Charset传递CharBuffer
- Excel设置扩展数据区域实现输入新行自动扩展上行公式
- Collections
- C++ bug tips
- HDU沈阳网络赛:transaction transaction transaction(树形dp & 最短路)
- 第二周项目1-多文件程序的组织(课程主页版)
- Ubuntu16.04安装inetsim模拟Internet
- Redis与Memcached区别
- mysql having的用法
- 有史以来在表格下方新增空行最快捷的方法(没有之一)
- Appach_Tomcat整合架设