# -*-coding:utf-8  -*-
from collections import namedtuple
Point=namedtuple('Point',['x','y'])
p=Point(1,2)
print p.x
#1
print p.y
#2 # namedtuple是一个函数,它用来创建一个自定义的tuple对象,并且规定了tuple元素的个数,并可以用属性而不是索引来引用tuple的某个元素。 # 这样一来,我们用namedtuple可以很方便地定义一种数据类型,它具备tuple的不变性,又可以根据属性来引用,使用十分方便。
print isinstance(p,Point)
#True
print isinstance(p,tuple)
# True
#如果要用坐标和半径表示一个圆,也可以用namedtuple定义:
Circle=namedtuple('Circle',['x','y','z']) #使用list存储数据时,按索引访问元素很快,但是插入和删除元素就很慢了,因为list是线性存储,数据量大的时候,插入和删除效率很低
#deque 是为了高效实现插入和删除操作的双向列表,适合用于队列和栈:
from collections import deque q=deque(['a','b','c'])
q.append('x')
q.appendleft('y')
print q
# deque(['y', 'a', 'b', 'c', 'x']) #defaultdict
#使用 dict时,如果引用的key不存在,就会抛出keyError.如果希望key不存在时,返回一个默认值,就可以使用defaultdict:
from collections import defaultdict
dd=defaultdict(lambda:'N/A')
dd['key1']='abc'
print dd['key1']
# abc
print dd['key2']
# N/A #OrderedDict
#使用dict时,key是无序的,在对dict做迭代时,我们无法确定key的顺序,如果要保持key的顺序,可以用orderdict
from collections import OrderedDict d=dict([('a',1),('b',2),('c',3)]) print d
# {'a': 1, 'c': 3, 'b': 2} dict的key是无序的 od=OrderedDict([('a',1),('b',2),('c',3)])
print od
# OrderedDict([('a', 1), ('b', 2), ('c', 3)]) #注意,OrderedDict的Key 会按照插入的顺序排列,不是key本身排序:
od=OrderedDict()
od['z']=1
od['y']=2
od['x']=3
print od.keys()
# ['z', 'y', 'x'] #Counter是一个简单的计数器,例如,统计字符出现的个数:
from collections import Counter
c=Counter()
for ch in 'programming':
c[ch]=c[ch]+1 print c
# Counter({'g': 2, 'm': 2, 'r': 2, 'a': 1, 'i': 1, 'o': 1, 'n': 1, 'p': 1})

  

内建模块collections的使用的更多相关文章

  1. Python内建模块--collections

    python内建模块--collections collections是Python内建的一个集合模块,提供了许多有用的集合类. namedtuple 我们知道tuple可以表示不变集合,例如,一个点 ...

  2. python常用内建模块 collections,bs64,struct,hashlib,itertools,contextlib,xml

    #  2  collections 是Python内建的一个集合模块,提供了许多有用的集合类. # 2.1 namedtuple #tuple可以表示不变集合,例如,一个点的二维坐标就可以表示成: p ...

  3. 四十二 常用内建模块 collections

    collections是Python内建的一个集合模块,提供了许多有用的集合类. namedtuple 我们知道tuple可以表示不变集合,例如,一个点的二维坐标就可以表示成: >>> ...

  4. python内建模块Collections

    # -*- coding:utf-8 -*- # OrderedDict可以实现一个FIFO(先进先出)的dict, # 当容量超出限制时,先删除最早添加的Key: from collections ...

  5. python内建模块——collections模块

    在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter.deque.defaultdict.namedtuple和Ord ...

  6. python常用内建模块--collections

    1.namedtuple #namedtuple是一个函数,它用来创建一个自定义的tuple对象,并且规定了tuple元素的个数,并可以用属性而不是索引来引用tuple的某个元素.#这样一来,我们用n ...

  7. Python常用内建模块

    Python常用内建模块 datetime 处理日期和时间的标准库. 注意到datetime是模块,datetime模块还包含一个datetime类,通过from datetime import da ...

  8. Python常用的内建模块

    PS:Python之所以自称“batteries included”,就是因为内置了许多非常有用的模块,无需额外安装和配置,即可直接使用.下面就来看看一些常用的内建模块. 参考原文 廖雪峰常用的内建模 ...

  9. python的常用内建模块与常用第三方模块

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理 一.常用内置模块1.datetimePython 提供了一个 time 和 calendar 模块可 ...

随机推荐

  1. BZOJ4479 : [Jsoi2013]吃货jyy

    若$k\leq 15$,那么可以设$d[i][S]$表示经过了$S$集合的边,现在位于$i$点的最短路. 可以用Dijkstra算法在$O(n^22^k)$时间内求出. 否则若$k>15$,那么 ...

  2. Django——邮件发送

    在settings中添加关键信息 EMAIL_HOST = 'smtp.qq.com' #不同的邮箱有不同的发件地址(收件地址) EMAIL_PORT = 25 #smtp端口号 EMAIL_HOST ...

  3. 一个封装不错的 TcpClient 类

    using System;using System.Net;using System.Net.Sockets;using System.Text;using System.Threading; nam ...

  4. react-navigation 中的多tabs嵌套时内部tabs无法正常切换问题

    原因 问题应该是当用户滑动或切换时,无法判断是哪个tabs应该进行滑动切换和展示切换动画. 解决 swipeEnabled - 是否允许在标签之间进行滑动 animationEnabled - 是否在 ...

  5. JS_高程5.引用类型(1)Object类型

    引用类型 在ECMASCript中,引用类型是一种数据结构,将数据和功能组织在一起,引用类型有时候也被称为对象定义,因为它们描述的是一类对象所具有的属性和方法.(注意:尽管ECMAScript从技术上 ...

  6. SpringMVC中使用JSON

    前台发送: 传递JSON对象 function requestJson(){ $.ajax.({ type : "post", url : "${pageContext. ...

  7. HTML 回顾整理

    <html>标签:定义HTML文档 <body>标签:定义文档主体 <h1> - <h6> 标签:定义HTML标题 <hr> 标签:创建水平 ...

  8. PMM 对MYSQL 的监控配制

      系统选择: centos 7.2     关闭防火墙:     systemctl stop firewalld.service     systemctl disable firewalld.s ...

  9. 理解Docker镜像分层

    关于base镜像 base 镜像有两层含义: 不依赖其他镜像,从 scratch 构建. 其他镜像可以之为基础进行扩展. 所以,能称作 base 镜像的通常都是各种 Linux 发行版的 Docker ...

  10. 如何在一小时内更新100篇文章?-Evernote Sync插件介绍

    上一篇"手把手教你制作微信小程序,开源.免费.快速搞定",已经教会你如何快速制作一个小程序,但作为资讯类小程序,内容不可少,并且还需要及时更新. 但是,如果让你复制粘贴,可能还需要 ...