美文网首页
Python中的高级元组---collections.named

Python中的高级元组---collections.named

作者: 渺茫的小怪兽 | 来源:发表于2019-12-10 21:58 被阅读0次
collections.namedtuple是python中为了改善原始元组tuple无法对内部数据进行命名的局限性而提供的一个工具包。这个工厂函数,来构造一个带字段名的元组。具名元组的实例和普通元组消耗的内存一样多,因为字段名都被存在对应的类里面。这个类跟普通的对象实例比起来也要小一些,因为 Python 不会用 __dict__ 来存放这些实例的属性。
具名元组的定义如下
tuple1 = collections.namedtuple(typename, field_names, rename=False) 

返回的是一个具名元组的对象

  • typename:元组名称
  • field_names: 元组内元素的名称
  • rename: 如果元素名称中含有 python 的关键字,则必须设置为 rename=True
from collections import namedtuple
    
# student = namedtuple('student', 'name sex age hobby')
student = namedtuple("student",
                          ['name', # the name of student
                           'sex',  # the sex of student
                           'age',  # the sex of student
                           'hobby' # the hobby of student
                           ])
stu = student("tom", 'man', 21, ['piano', 'basketball'])
print(stu)
print(stu.name)
print(stu.sex)
print(stu.age)
print(stu.hobby)
输出
student(name='tom', sex='man', age=21, hobby=['piano', 'basketball'])
tom
man
21
['piano', 'basketball']

代码中可以看出:

  • 具名元组和元组具有同样的性质就是元素是可以有多种类型的
  • 具名元组的第一个元素是具名元组的名称,第二个是元组内的元素名称。有两种方式:① 元素名称用空格隔开写在同一个字符串中 ② 元素名称用一个列表包起来。

我们可以用类似于对象.属性的方式来访问里边元素的值。

除了直接创建对象的方式来创建,也可以用_make(list)来进行对象的创建

stu02 = student._make(["paddy", 'man', 18, ['painting', 'riding']])
print(stu02)
输出
student(name='paddy', sex='man', age=18, hobby=['painting', 'riding'])

可以使用_replace(元素名=值)修改元素的值

stu02 = stu02._replace(age=20)
print(stu02)
输出
student(name='paddy', sex='man', age=20, hobby=['painting', 'riding'])

还可以使用_asdict()将具名元组转换为dict这个字典是有序字典OrderedDict

print(stu02._asdict())
输出
OrderedDict([('name', 'paddy'), ('sex', 'man'), ('age', 20), ('hobby', ['painting', 'riding'])])

相关文章

  • Python中的高级元组---collections.named

    collections.namedtuple是python中为了改善原始元组tuple无法对内部数据进行命名的局限...

  • 14 高级变量类型

    高级变量类型 目标 列表 元组 字典 字符串 公共方法 变量高级 知识点回顾 Python 中数据类型可以分为 数...

  • 07.Python集合与字符串

    高级变量类型 目标 列表 元组 字典 字符串 公共方法 变量高级 知识点回顾 Python 中数据类型可以分为 数...

  • 8.Python集合与字符串

    高级变量类型 目标 列表 元组 字典 字符串 公共方法 变量高级 知识点回顾 Python 中数据类型可以分为 数...

  • 07.Python集合与字符串

    高级变量类型 目标 列表 元组 字典 字符串 公共方法 变量高级 知识点回顾 Python 中数据类型可以分为 数...

  • python小课堂08 - 基本数据类型元组篇

    python小课堂08 - 基本数据类型元组篇 python中的元组 python中的元组,也是作为基础数据类型之...

  • Python中的tuple元组

    Python中的tuple元组 一、访问元组 Python中的元组和列表类似,不同之处在于元组中的元素不能够被修改...

  • Python 元组

    Python中,元组的操作与列表相似,不同点是元组是不可变对象,元组中的元素不能修改。 1、定义元组 Python...

  • Python入门基础二(高级特性)

    概述 所说高级特性包括切片、迭代、列表生成式、迭代器、生成器。 切片 Python学习一(基础)中列表和元组的基本...

  • Python TUPLE - 打包,解包,比较,切片,删除,键

    什么是Python的中的元组? 元组就像一系列不可变Python对象的列表。列表和元组之间的区别在于列表在方括号中...

网友评论

      本文标题:Python中的高级元组---collections.named

      本文链接:https://www.haomeiwen.com/subject/nkhngctx.html