## collections.namedtuple()命名序列元素

 from collections import namedtuple

 Student = namedtuple("Student", ['name', 'age', 'id'])  # 返回一个名为Student的包含name, age, id 属性的类
stu1 = Student("Stanley", 22, '') # 实例化
print(stu1)
# Student(name='Stanley', age=22, id='001')
print(stu1.name)
# Stanley # namedtuple()创建的类的实例化对象支持所有普通元组操作,包括索引和解压,同样的,其元素不可修改
print(len(stu1))
#
name, age, s_id = stu1
print(name)
# Stanley stu1.name = "Lily"
# AttributeError: can't set attribute # 如果要修改元素,可以使用_replace()方法
# 此方法并不是修改某个属性,而是和元组修改一样,整体指向了新的不同属性值的地址 stu1 = stu1._replace(name="Lily")
print(stu1.name)
# Lily # 使用namedtuple命名序列元素相比于使用下标访问元素更加清晰,代码可读性更高 # 使用nametuple建立原型,设置默认值(初始值) Student = namedtuple("Student", ['name', 'age', 'nationality'])
student_prototype = Student('', 0, 'China') # Student类的初始值 def update(s):
return student_prototype._replace(**s) stu1 = {"name": "Stanley", "age": 22}
print(update(stu1))
# Student(name='Stanley', age=22, nationality='China')

参考资料:
  Python Cookbook, 3rd edition, by David Beazley and Brian K. Jones (O’Reilly).

collections.namedtuple()命名序列元素的更多相关文章

  1. Python: collections.nametuple()--映射名称到序列元素

    问题:  通过下标访问列表或者元组中元素 answer: collections.namedtuple()通过使用元组对象来解决这个问题 这个函数实际上是一个返回Python中标准元组类型子类的一个工 ...

  2. deque/defaultdict/orderedict/collections.namedtuple()/collections.ChainMap() 笔记

    关于deque的使用 collections.deque([list[, max_length]]) # 不限定长度,可随意添加没有上限 >>> from collections i ...

  3. collections之命名元组

    #python中没有为我们提供可命名的tuple的类,这个类需要我们自己来定义,下面我们就自己来定义一个类,然后namedtuple就是可以通过名称来get#tuple中的元素,python中的tup ...

  4. Python namedtuple(命名元组)使用实例

    Python namedtuple(命名元组)使用实例 #!/usr/bin/python3 import collections MyTupleClass = collections.namedtu ...

  5. python中的collections.namedtuple

    简介 collections.namedtuple是一个工厂方法,它可以动态的创建一个继承tuple的子类.跟tuple相比,返回的子类可以使用名称来访问元素. 使用方法 用一个例子来介绍: > ...

  6. 【编程题目】有两个序列 a,b,大小都为 n,序列元素的值任意整数,无序;(需要回头仔细研究)

    32.(数组.规划)有两个序列 a,b,大小都为 n,序列元素的值任意整数,无序:要求:通过交换 a,b 中的元素,使[序列 a 元素的和]与[序列 b 元素的和]之间的差最小.例如: var a=[ ...

  7. python序列元素引用容易出错的地方

    python序列分列表和元组,不同之处在于元组的元素不能修改.元组使用小括号,列表使用方括号.元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可.举个简单的例子,a1是一个元组,a2是一个列表 ...

  8. Python: 序列: 过滤序列元素

    问题: 你有一个数据序列,想利用一些规则从中提取出需要的值或者是缩短序列 answer: eg1:列表推导 最简单的过滤序列元素的方法就是使用列表推导.比如:>>> mylist = ...

  9. HDU 1087 Super Jumping! Jumping! Jumping!(求LSI序列元素的和,改一下LIS转移方程)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1087 Super Jumping! Jumping! Jumping! Time Limit: 20 ...

随机推荐

  1. tomcat启动很慢 停留在 At least one JAR was scanned for TLDs yet contained no TLDs.

    部署项目时候,发现启动特别慢,要等好几分钟,这不正常啊.然后每次部署都停留在 At least one JAR was scanned for TLDs yet contained no TLDs. ...

  2. PHP开发必用的mysql那么你知道Mysql中MyISAM和InnoDB的区别吗?

    构成上的区别: 每个MyISAM在磁盘上存储成三个文件.第一个文件的名字以表的名字开始,扩展名指出文件类型. .frm文件存储表定义. 数据文件的扩展名为.MYD (MYData). 索引文件的扩展名 ...

  3. git rebase vs git merge详解

    https://medium.com/@porteneuve/getting-solid-at-git-rebase-vs-merge-4fa1a48c53aa#.std3ddz0g 请参考另外一篇文 ...

  4. QT网络编程Tcp下C/S架构的即时通信

    先写一个客户端,实现简单的,能加入聊天,以及加入服务器的界面. #ifndef TCPCLIENT_H #define TCPCLIENT_H #include <QDialog> #in ...

  5. 最小生成树-Prim算法与Kruskal算法

    一.最小生成树(MST) ①.生成树的代价:设G=(V,E)是一个无向连通网,生成树上各边的权值之和称为该生成树的代价. ②.最小生成树:在图G所有生成树中,代价最小的生成树称为最小生成树. 最小生成 ...

  6. php简单的数组递归

    参照 http://www.oschina.net/code/snippet_105637_11401  的例子   $arr = array('aa' =>  array('bb' => ...

  7. 入门摄影——尼康DX

    学习链接 单反应当怎样入门? - Williams的回答 - 知乎 [摄影教程]尼康数码单反相机使用视频教程_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili 图像品质与图像大小 图像品质:暂选JP ...

  8. 2018.09.23模拟总结(T2)

    T1,T3我就不说啦,反正也不会.主要想讲的是T2. T2用了一个神奇的算法:折半搜索. 因为这个坑爹的数据范围告诉我们暴搜或是状压会TLE,而一半刚好能卡过去. 折半搜索其实跟暴搜没什么区别,就是折 ...

  9. protected internal 和internal 区别

    private:只能在本类中使用protected:在本类中及其子类中可以使用  可以跨程序集 internal:同一命名空间(程序集)中的类可以使用  限定的是只有在同一个程序集中才可以访问,可以跨 ...

  10. 关于P/Invoke的闲话

    P/Invoke,Platform Invoke,平台调用,是.NET打通托管与非托管两个世界的通路,10来年前曾经研究过这方面的技术,还曾发表过相关文章在<程序员>上,呵呵. 昨天有需求 ...