mqslllduoduo

Python元组的升级版本 -- namedtuple(具名元组)

因为元组的局限性:不能为元组内部的数据进行命名,所以往往我们并不知道一个元组所要表达的意义,所以在这里引入了 collections.namedtuple 这个工厂函数,来构造一个带字段名的元组。具名元组的实例和普通元组消耗的内存一样多,因为字段名都被存在对应的类里面。这个类跟普通的对象实例比起来也要小一些,因为 Python 不会用 __dict__ 来存放这些实例的属性。

namedtuple 对象的定义如以下格式:

collections.namedtuple(typename, field_names, verbose=False, rename=False)

返回一个具名元组子类 typename,其中参数的意义如下:

typename:元组名称

field_names: 元组中元素的名称

rename: 如果元素名称中含有 python 的关键字,则必须设置为 rename=True

verbose: 默认就好

下面来看看声明一个具名元组及其实例化的方法:

import collections

# 两种方法来给 namedtuple 定义方法名

#User = collections.namedtuple('User', ['name', 'age', 'id'])

User = collections.namedtuple('User', 'name age id')

user = User('tester', '22', '464643123')

print(user)

collections.namedtuple('User', 'name age id') 创建一个具名元组,需要两个参数,一个是类名,另一个是类的各个字段名。后者可以是有多个字符串组成的可迭代对象,或者是有空格分隔开的字段名组成的字符串(比如本示例)。具名元组可以通过字段名或者位置来获取一个字段的信息。

输出结果:

User(name='tester', age='22', id='464643123')

具名元组的特有属性:

类属性 _fields:包含这个类所有字段名的元组

类方法 _make(iterable):接受一个可迭代对象来生产这个类的实例

实例方法 _asdict():把具名元组以 collections.OrdereDict 的形式返回,可以利用它来把元组里的信息友好的展示出来

from collections import namedtuple

# 定义一个namedtuple类型User,并包含name,sex和age属性。

User = namedtuple('User', ['name', 'sex', 'age'])

# 创建一个User对象

user = User(name='Runoob', sex='male', age=12)

# 获取所有字段名

print( user._fields )

# 也可以通过一个list来创建一个User对象,这里注意需要使用"_make"方法

user = User._make(['Runoob', 'male', 12])

print( user )

# User(name='user1', sex='male', age=12)

# 获取用户的属性

print( user.name )

print( user.sex )

print( user.age )

# 修改对象属性,注意要使用"_replace"方法

user = user._replace(age=22)

print( user )

# User(name='user1', sex='male', age=21)

# 将User对象转换成字典,注意要使用"_asdict"

print( user._asdict() )

# OrderedDict([('name', 'Runoob'), ('sex', 'male'), ('age', 22)])

以上实例输出结果为:

('name', 'sex', 'age')

User(name='Runoob', sex='male', age=12)

Runoob

male

12

User(name='Runoob', sex='male', age=22)

OrderedDict([('name', 'Runoob'), ('sex', 'male'), ('age', 22)])

python namedtuple用法_Python namedtuple相关推荐

  1. python namedtuple用法_Python namedtuple(命名元组)使用实例

    namedtuple对象就如它的名字说定义的那样,你可以给tuple命名,具体看下面的例子:import collections Person=collections.namedtuple('Pers ...

  2. python基本用法_Python基本用法总结

    Python 的设计具有很强的可读性,易于使用.这里对python基本用法做一个总结介绍. 一. 变量类型 1. 变量赋值 Python中的变量赋值不需要类型声明,每个变量在使用前都必须赋值,变量赋值 ...

  3. python end用法_python中end的使用方法

    python中end的使用方法 发布时间:2020-06-17 09:47:13 来源:亿速云 阅读:178 这篇文章给大家分享的是有关python中end的使用方法,小编觉得挺实用的,因此分享给大家 ...

  4. python try用法_python中的try的用法

    展开全部 try语句32313133353236313431303231363533e78988e69d8331333431366238是python里面的控制语句,与except,finally配合 ...

  5. python namedtuple用法_Python的collections模块中namedtuple结构使用示例

    namedtuple 就是命名的 tuple,比较像 C 语言中 struct.一般情况下的 tuple 是 (item1, item2, item3,...),所有的 item 都只能按照 inde ...

  6. python 包用法_Python 基础教程之包和类的用法

    Python 基础教程之包和类的用法 这篇文章主要介绍了 Python 基础教程之包和类的用法的相关资料, 需要的朋友可以参考下 Python 是一种面向对象.解释型计算机程序设计语言,由 Guido ...

  7. python yield用法_Python中迭代器和生成器的区别?

    公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助! 小猿会从最基础的面试题开始, ...

  8. python elif 用法_Python入门高级教程--Python 条件语句

    Python 条件语句 Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. 可以通过下图来简单了解条件语句的执行过程: Python程序语言指定任何非0和 ...

  9. python elseif用法_python学习笔记(一)

    0.前言 本文是根据廖雪峰python教程学习总结而来. 参考<python学习手册>,<流畅的python>以及python官方手册等网络资料 略过了与C和C++ 语言相同的 ...

最新文章

  1. ISME:中大李文均组在放线菌生命暗物质的生态功能与进化上取得进展
  2. 中间表增加额外字段_知识分享 I 这样显示报表筛选字段 你学会了吗
  3. percona mysql5.7进程出现大量unauthenticated user解决记录
  4. Spring请求级备忘录
  5. 手把手教你用EVO工具评估SLAM数据集TUM、KITTI、EuRoC(附代码)
  6. python面试题总结(3)-- 数据类型(字符串)
  7. 斯坦福大学深度学习公开课cs231n学习笔记(4)正向传播及反向传播
  8. win8.1 uefi引导
  9. 邮件定时发送微博热搜
  10. android Textview属性细节以及EditText属性
  11. VOC2007/2012数据集解析
  12. 网络安全(加密技术、数字签名、证书)
  13. 第三章 MapReduce框架原理
  14. 计算机二进制祖宗是西方人?中国道教一张八卦图千年前早已解释!
  15. 外贸公司比较常用邮箱有哪几个?邮箱的区别是什么?
  16. IP地址的分类及子网掩码的计算
  17. dellR730装机教程
  18. response是什么意思中文_response是什么意思
  19. 休谟与人机、因果、实践
  20. 绩效评估如何帮助提高员工绩效?

热门文章

  1. Anaconda 安装及配置
  2. 第七章、Spring Boot MyBatis升级篇
  3. 使用最简单的方法实现QQ登录
  4. 关于SVN提交不成功问题
  5. AI自动修复图片网站
  6. springboot+jsp线上饰品商城购物网站java
  7. 华南农业大学C语言程序设计(实验五)
  8. devC++代码格式化对齐的快捷键
  9. 手机网页UI框架jQuery Mobile介绍之按钮篇
  10. 国产android智能手表,国产安卓手机越来越骚了 这回连手表都用上了