namedtuple类

导入模块

from collections import namedtuple

使用方法及说明

#pycharm 里按住 ctrl键点击 collections可查看源码

#collections数据结构
#__all__ = ['deque', 'defaultdict', 'namedtuple', 'UserDict', 'UserList','UserString', 'Counter', 'OrderedDict', 'ChainMap']

使用说明:

#猜包功能
name = ("lijie",'ll')
user = ("aa",23,189,'boddy') username,age,height,edu = user
print (username,age,height,edu)

打印结果:
aa 23 189 boddy #另一种方法
username,*other = user
print (username,other)

打印结果:
aa [23, 189, 'boddy']

namedtuple

功能说明:

相当于创建一个类,并调用类的属性的值

#传统类的属性值调用
class User1(object):
def __init__(self,name,age,height):
self.name = name
self.age = age
self.height = height

常规操作
#使用namedtuple,namedtuple是tuple的子类,相比于class,节省空间,代码变少,使用方法如下:
User = namedtuple("user",['name','age','height'])    #相当于类的初始化,初始化变量信息
user = User(name='test',age=23,height=111)        #给各参数赋值
print (user.name,user.age,user.height)           #直接打印类的属性的值 #增加一列(*args方式,元组)
User = namedtuple("user",['name','age','height',"edu"])      #假如edu为新增加的列
user = ('test',23,111)   #元组
user_end = User(*user,"master") ##将数组传到namedtuple里,master为添加的edu的信息
print (user_end.name,user_end.age,user_end.height,user_end.edu) #以**kwargs的方式增加列或传入数据(字典)
User = namedtuple("user",['name','age','height',"edu"])
user = {                  #字典
"name":'test',
"age":23,
"height":111
}
user_end = User(**user,edu="master") ##将字典数据传到namedtuple里print (user_end.name,user_end.age,user_end.height,user_end.edu) #_make方法
##如果用_make方法,可以把“*”省略,但是要求tuple或者dict里的元素数量必须与nametuple里指定的属性数量相同,例:
user1 = {
"name":'test',
"age":23,
"height":111,
"edu":"aa"
}
user_end = User._make(user1)
print (user_end.name,....) #当然,namedtuple也支持猜包
name,age,*other = user_end
print (name,age,other)

额外补充

tuple 可作为字典的key,而list不可以,示例:

name_tuple = ("test",22,185,"baskerball")
name_list = ["test1",22,188,"baseball"] dd = {}
dd[name_tuple] = 'boddy'
print (dd) dd[name_list] = 'body'
print (dd)

打印结果: {('test', 22, 185, 'baskerball'): 'boddy'} Traceback (most recent call last):
File "D:/python-script/collections_module/chapter1/collection_module.py", line 29, in <module>
dd[name_list] = 'body'
TypeError: unhashable type: 'list'

collections 数据结构模块namedtuple的更多相关文章

  1. collections集合模块 [namedtuple,deque,*]

    collections是Python内建的一个集合模块,提供了许多有用的集合类. namedtuple namedtuple是一个函数, 它用来创建一个自定义的tuple对象,并且规定了 tuple元 ...

  2. collections模块-namedtuple

    namedtuple -> 命名元组 这里的命名指的是对元组中元素的命名. 通过一个例子来看 import collections Person = collections.namedtuple ...

  3. python基础 ---time,datetime,collections)--时间模块&collections 模块

    python中的time和datetime模块是时间方面的模块 time模块中时间表现的格式主要有三种: 1.timestamp:时间戳,时间戳表示的是从1970年1月1日00:00:00开始按秒计算 ...

  4. 25、typing导入Python的数据类型模块、collections集合模块

    一.typing模块 1.typing模块的作用 类型检查,防止运行时出现参数和返回值类型不符合. 作为开发文档附加说明,方便使用者调用时传入和返回参数类型. 该模块加入后并不会影响程序的运行,不会报 ...

  5. python基础语法12 内置模块 json,pickle,collections,openpyxl模块

    json模块 json模块: 是一个序列化模块. json: 是一个 “第三方” 的特殊数据格式. 可以将python数据类型 ----> json数据格式 ----> 字符串 ----& ...

  6. The Collections Module内建collections集合模块

    https://www.bilibili.com/video/av17396749/?p=12 Python函数式编程中的迭代器,生成器详解 课程内容 1.iterators are objects ...

  7. collections库的namedtuple+pytest的使用

    from collections import namedtupleTask=namedtuple('Task',['summary','owner','done','id'])Task.__new_ ...

  8. fis中的数据结构模块Config

    /* * config * caoke */ 'use strict'; Object.extend=function(props){ //继承父类 var prototype=Object.crea ...

  9. Python高级数据结构-Collections模块

    在Python数据类型方法精心整理,不必死记硬背,看看源码一切都有了之中,认识了python基本的数据类型和数据结构,现在认识一个高级的:Collections 这个模块对上面的数据结构做了封装,增加 ...

随机推荐

  1. Node.js 安装与管理

    一.node安装 Windows下,官网下载 Node.js 安装包,运行安装即可, 安装成功后,可查看版本号 node -v 二.npm npm 是 node 包管理工具,随同node一起安装,安装 ...

  2. Tomcat的四种web应用部署方式详解

    在Tomcat中有四种部署Web应用的方式,简要的概括分别是: (1)利用Tomcat自动部署 (2)利用控制台进行部署 (3)增加自定义的Web部署文件(%Tomcat_Home%\conf\Cat ...

  3. centos安装桌面,下面的几个包缺一不可

    yum groupinstall “X window system” yum groupinstall “Desktop” yum groupinstall “Chinese Support” 不然的 ...

  4. Codeforces997D Cycles in product 【FFT】【树形DP】

    题目大意: 给两个树,求环的个数. 题目分析: 出题人摆错题号系列. 通过画图很容易就能想到把新图拆在两个树上,在树上游走成环. 考虑DP状态F,G,T.F表示最终答案,T表示儿子不考虑父亲,G表示父 ...

  5. HBase读取与写入流程

    写入流程 读取流程 https://yq.aliyun.com/articles/670748?spm=a2c4e.11153940.blogcont684011.28.427e4648CTtaPL

  6. 对Redis的理解

    1.redis使用的场景 热点数据(经常会被查询,但是不经常被修改或者删除的数据)

  7. GGS-DDU HDU - 4966

    GGS-DDU Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total S ...

  8. 【Gym 100812C】Story of Princess (走完图所有边)

    BUPT2017 wintertraining(15) #7A 题意 给你一个图,n个点m条边,求走遍所有边,至少经过几次点,及输出依次经过的点.n and m (2 ≤ n ≤ 10^5, 1 ≤  ...

  9. 脚本监控web服务器,工作不正常发邮件提醒

    背景介绍公司有多个web网站,没有配置监控服务,每天都需要定时检查服务器是否工作正常.低效耗时. 代码片段 #!/bin/bash # Author Jerry.huang (Email:Jerry. ...

  10. 洛谷【P2257】YY的GCD

    YY的GCD 原题链接 这应该是我做的第一道莫比乌斯反演的题目. 题目描述 神犇YY虐完数论后给傻×kAc出了一题 给定N, M,求1<=x<=N, 1<=y<=M且gcd(x ...