本文主要介绍namedtuple类型对象的创建以及对应属性的访问。

namedtuple位于Python内置模块collections,属于tuple子类,类似于C/C++中的struct结构体,namedtuple中每个元素具有一个名称。

namedtuple类型声明

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

参数意义:
        typename:    字符串,元组名称
        field_names:由元组中元素的名称,可选类型为:字符串列表或空格分隔开字符串或逗号分隔开字符串
        verbose:        默认就好
        rename:        如果元素名称中含有python的关键字,则必须设置为rename=True
后两个参数采取默认值就好。

1. 调用流程

【1】声明一个namedtuple,此时只是相当于声明出了一种类型,并未具体创建实例

from collections import namedtupleStudent_Class = namedtuple("Student", ["name", "sex", "age"])

【2】实例化,此时真正创建出实例化对象

student = Student_Class("alpha", "male", 15)
print(student)
输出结果:Student(name='alpha', sex='male', age=15)
# 访问元素
student.name ==> "alpha"
student.sex  ==> "male"
student.age  ==> 15


】在创建实例化对象时使用变量名,即Student_Class,而类型名称为Student,因此可以将变量名和类型名统一,后续使用无需区分。

type(student)         ==> __main__.Student
Student_Class.__mro__ ==> (__main__.Student, tuple, object)

2. 参数field_names不同类型时具名元组的声明

# 第一种:field_names为空格分隔开字符串
Student_Class = namedtuple("Student", "name sex age")
# 第二种:field_names为逗号分隔开字符串
Student_Class = namedtuple("Student", "name, sex, age")
# 第三章:field_names为字符串列表
Student_Class = namedtuple("Student", ["name", "sex", "age"])

3. 具名元组常用属性

主要包括:
       _fields:                返回一个元组,包含所有字段的名称
       _make(iterable):  传入可迭代对象创建具名元组实例化对象
       _replace(**kwds):修改具名元组中某一个元素值
       _asdict():              将具名元组对象转换成OrderedDict

以具体实例说明

(1)创建具名元组对象
In [1]: from collections import namedtuple
In [2]: Student_Class = namedtuple("Student", ["name", "sex", "age"])
In [3]: student = Student_Class(name="alpha", sex="male", age=20)
(2)_fields属性: 返回一个元组,包含所有的字段名称
In [4]: type(student._fields)
Out[4]: tuple
In [5]: student._fields
Out[5]: ('name', 'sex', 'age')
(3)_make(iterable): 传入可迭代对象创建具名元组实例化对象
In [6]: student = Student_Class._make(["beta", "female", 21])
In [7]: student
Out[7]: Student(name='beta', sex='female', age=21)
(4)_replace(**kwds):修改具名元组中某一个元素值
In [8]: student = student._replace(age=50)
In [9]: student
Out[9]: Student(name='beta', sex='female', age=50)
(5)_asdict():将具名元组对象转换成OrderedDict
In [10]: student.as_dict()
Out[10]: OrderedDict([('name', 'beta'), ('sex', 'female'), ('age', 50)])

Python namedtuple ——具名元组相关推荐

  1. Python 3.7.1 中 namedtuple 具名元组基本用法详解

    Python 3.7.1 中 namedtuple 具名元组基本用法详解 转载请注明出处:https://blog.csdn.net/jpch89/article/details/84645251 文 ...

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

    Python namedtuple(命名元组)使用实例 #!/usr/bin/python3import collectionsMyTupleClass = collections.namedtupl ...

  3. namedtuple 具名元组详解

    1. 概述 namedtuple译作具名元组或命名元组 具名元组可以理解为元组的增强版本,它适用于任何普通元组的应用范围. 具名元组为元组中的每个元素都赋予了含义,从而增强代码可读性,能够让程序员写出 ...

  4. python之具名元组

    具名元组的定义 Python标准库collections中定义了具名元组(namedtuple)工厂函数,它可以构建带字段名的元组. 工厂函数参数详解 变量名 = namedtuple(typenam ...

  5. python namedtuple (命名元组)用法详解

    Python元组的升级版本 – namedtuple(具名元组) 因为元组的局限性:不能为元组内部的数据进行命名,所以往往我们并不知道一个元组所要表达的意义,所以在这里引入了 collections. ...

  6. python namedtuple用法_Python namedtuple

    mqslllduoduo Python元组的升级版本 -- namedtuple(具名元组) 因为元组的局限性:不能为元组内部的数据进行命名,所以往往我们并不知道一个元组所要表达的意义,所以在这里引入 ...

  7. 具名元组namedtuple

    具名元组namedtuple 因为元组的局限性:不能为元组内部的数据进行命名,所以往往我们并不知道一个元组所要表达的意义,所以在这里引入了 collections.namedtuple 这个工厂函数, ...

  8. python中元组拆包_Python 元组拆包和具名元组解析

    Python 元组拆包和具名元组解析 前言 在 Python 中元组是一个相较于其他语言比较特别的一个内置序列类型有些 python 入门教程把元组成为不可变的列表, 这种说法是不完备的, 其并没有完 ...

  9. python 元组拆包_Python元组拆包和具名元组解析实例详解

    前言 在Python中元组是一个相较于其他语言比较特别的一个内置序列类型.有些python入门教程把元组成为"不可变的列表",这种说法是不完备的,其并没有完整的概括元组的特点.除了 ...

最新文章

  1. 【数据结构】关键路径
  2. 飞桨PaddlePaddle深度学习实战
  3. yolov5 代码版,去掉配置文件
  4. 服务器功率一般多少_单机柜供电能力提升后,选择1U服务器还是2U服务器?
  5. WP7开发—Silverlight多点触摸事件详解【含Demo代码】
  6. Cppunit 源码 SynchronizedObject
  7. C++/OpenCV:将数据保存到xml、yaml / 从xml、yaml读取数据
  8. interllij IDEA2017快捷键风格修改为myEclipse快捷键风格
  9. 启动程序端口被占用Address already in use: bind解决方案
  10. Windows2000计划任务对机器进行重新启动
  11. MVC操作SQL数据库增删改查
  12. iOS开发之UIControlEventEditingChanged失效
  13. 微积分是研究连续变化的数学理论
  14. PowerBuilder反编译,PowerBuilder 反编译
  15. 数据挖掘算法和实际应用案例
  16. opencv半透明填充不规则区域
  17. AndroidAPI
  18. 在Windows上部署一个FHIR服务器(HAPI FHIR)
  19. spark Hash Shuffle内幕彻底解密
  20. 【每日最爱一句】2013.07.31

热门文章

  1. LOL英雄联盟自动打人机训练升级【CircuitPython】
  2. react、react-redux、redux-thunk、react-saga运用
  3. 缓解环境噪声对音频质量干扰
  4. Protel 99 SE使用心得
  5. 思考是勤奋的一部分,人最大的懒惰是思想懒惰
  6. Python模拟屏幕点击自动完成词达人任务(附源码)
  7. 工业POE交换机出现不供电怎么办?
  8. 服务器设备管理系统,用勤哲Excel服务器实现设备管理系统
  9. pywinauto 自动进行远程桌面登陆 remote desktop connection
  10. 华为手机怎么隐藏按键图标_原来华为手机右上角隐藏扫描仪!纸质档一键电子化,真的涨知识了...