python中把元组转换为namedtuple方法

我们可以把表里每一个横行的数据,看成是不同的元组。在理解了这个概念后,昨天我们学了不少的namedtuple类,是否也能把元组转换成namedtuple呢?当然这是一个尝试,很多小伙伴平时使用的时候会很少用到,而且资料的搜集方面也比较难找。小编也搜集了很久才有收获,本篇就为大家带来元组在python中转换为namedtuple的方法。

之前我们了解了为什么使用namedtuple,现在该学习如何将常规元组和转换为namedtuple了。假设由于某种原因,有包含彩色RGBA值的实例。如果要将其转换为Color namedtuple,则可以按以下步骤进行:

>>> c = {"r": 50, "g": 205, "b": 50, "alpha": alpha}
>>> Color(**c)
>>> Color(r=50, g=205, b=50, alpha=0)

我们可以利用该**结构将包解压缩dict为namedtuple。

元组类似于列表,是一个基于位置的有序对象集合,但是元组一旦创建之后就不能更改,因此列表中修改元素的操作对于元组都不适用。

使用()就可以创建元组,元素之间使用英文逗号,隔开。

num_tuple = (1, 2, 3)
string_tuple = ("a", )

如果我想从dict创建一个namedtupe,如何做?

>>> c = {"r": 50, "g": 205, "b": 50, "alpha": alpha}
>>> Color = namedtuple("Color", c)
>>> Color(**c)
Color(r=50, g=205, b=50, alpha=0)

过将dict实例传递给namedtuple工厂函数,它将为你创建字段。然后,Color像上边的例子一样解压字典c,创建新实例。

运行代码后,就可以把元组转换为namedtuple了。

元组转换为namedtuple实例扩展:

在内部使用namedtuples,但我想保持与提供普通元组的用户的兼容性。

from collections import namedtuple
tuplePi=(1,3.14,"pi") #Normal tuple
Record=namedtuple("MyNamedTuple", ["ID", "Value", "Name"])
namedE=Record(2, 2.79, "e") #Named tuple
namedPi=Record(tuplePi) #Error
TypeError: __new__() missing 2 required positional arguments: 'Value' and 'Name'
tuplePi.__class__=Record
TypeError: __class__ assignment: only for heap types

到此这篇关于python中把元组转换为namedtuple方法的文章就介绍到这了,更多相关元组在python中如何转换为namedtuple内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python中把元组转换为namedtuple方法

    我们可以把表里每一个横行的数据,看成是不同的元组.在理解了这个概念后,昨天我们学了不少的namedtuple类,是否也能把元组转换成namedtuple呢?当然这是一个尝试,很多小伙伴平时使用的时候会很少用到,而且资料的搜集方面也比较难找.小编也搜集了很久才有收获,本篇就为大家带来元组在python中转换为namedtuple的方法. 之前我们了解了为什么使用namedtuple,现在该学习如何将常规元组和转换为namedtuple了.假设由于某种原因,有包含彩色RGBA值的实例.如果要将其转换

  • 10个示例带你掌握python中的元组

    数据结构是任何编程语言的关键部分.为了创建强大而性能良好的产品,必须非常了解数据结构. 在本文中,我们将研究Python编程语言的重要数据结构,元组. 元组是用逗号分隔并括在括号中值的集合.与列表不同,元组的元素是不可变的.不变性可以视为元组的识别特征. 我将通过示例解释元组的功能和对其的操作. 一.创建元组 元组由括号中的值组成,并用逗号分隔开 a=(3,4) print (a) print (type(a)) # (3, 4) # <class 'tuple'> 元组可以存储不同数据类型的

  • Python中关于元组 集合 字符串 函数 异常处理的全面详解

    目录 元组 集合 字符串 1.字符串的驻留机制 2.常用操作 函数 1.函数的优点: 2.函数的创建:def 函数名([输入参数]) 3.函数的参数传递: 4.函数的返回值: 5.函数的参数定义: 6.变量的作用区域 7.递归函数:函数体内套用该函数本身 8.将函数存储在模块中 9.函数编写指南: Bug 1.Bug常见类型 2.常见异常类型 3.python异常处理机制 pycharm开发环境的调试 编程思想 (1)两种编程思想 (2)类和对象的创建 元组 元组是不可变序列 多任务环境下,同时

  • Python中range函数的使用方法

    目录 1.range()函数是什么? 2.语法格式 3.报错问题 4.range()函数需要注意的 5.range对象是不可变序列 6.range函数实现逆序遍历 7.与列表list的使用 8.关于range函数小结 前言: 本篇基于Python3环境,Python2环境下的range会有所不同,但并不影响我们使用. 1.range()函数是什么? range()函数是python的内置函数,它能返回一系列连续添加的整数,能够生成一个列表对象. 大多数时常出如今for循环中,在for循环中可做为

  • Python 中几种字符串格式化方法及其比较

    Python 中几种字符串格式化方法及其比较 起步 在 Python 中,提供了很多种字符串格式化的方式,分别是 %-formatting.str.format 和 f-string .本文将比较这几种格式化方法. %- 格式化 这种格式化方式来自于 C 语言风格的 sprintf 形式: name = "weapon" "Hello, %s." % name C 语言的给实话风格深入人心,通过 % 进行占位. 为什么 %-formatting不好 不好的地方在于,

  • Python中list列表的赋值方法及遇到问题处理

    目录 1.列表list赋值方法 2.浅拷贝(shallowcopy) 3.深拷贝 4.关于拷贝操作的提醒 问题起源: 本文的原因是因为在使用list的直接赋值b=a时,得到的结果与预期不同,后来才发现直接使用等于号=对列表进行赋值会产生一系列的问题,于是将赋值.浅拷贝.深拷贝三者之间的区别进行记录. 1.列表list赋值方法 在python中,对象的赋值就是简单的对象引用,这点和C++是不同的, 如下例子所示: a = ['a', 'b', 'c'] b = a   # 采用简单的=赋值 pri

  • python中的元组与列表及元组的更改

    目录 1.列表(List) 2.元组(Tuple) 1.列表(List) 元组是由一对方括号构成的序列.列表创建后,可以根据自己的需要改变他的内容 >>> list=[1,2,3,4,5,6] >>> list[0]=8 >>> list[6]=0 >>> list [8, 2, 3, 4, 5, 6] 可以为列表添加新的数据: >>> len(list) #查看这个列表中有多少数据 6 >>> l

  • python 中pass和match使用方法

    前言 ​​pass​​ 语句不执行任何操作.语法上需要一个语句,但程序不实际执行任何动作时,可以使用该语句. 例如: >>> while True: ... pass # Busy-wait for keyboard interrupt (Ctrl+C) ... 下面这段代码创建了一个最小的类: >>> class MyEmptyClass: ... pass ... ​​pass​​​ 还可以用作函数或条件子句的占位符,让开发者聚焦更抽象的层次.此时,程序直接忽略 ​

  • python中elasticsearch_dsl模块的使用方法

    目录 前言 连接elasticsearch elasticsearch_dsl.Search query方法 filter方法 index方法 elasticsearch_dsl.query elasticsearch_dsl.Q 嵌套类型 查询 排序 分页 聚合 高亮显示 source限制返回字段 删除 案例分析 前言 elasticsearch-dsl是基于elasticsearch-py封装实现的,提供了更简便的操作elasticsearch的方法. 安装: install elastic

  • python中requests使用代理proxies方法介绍

    学习网络爬虫难免遇到使用代理的情况,下面介绍一下如何使用requests设置代理: 如果需要使用代理,你可以通过为任意请求方法提供 proxies 参数来配置单个请求: import requests proxies = { "http": "http://10.10.1.10:3128", "https": "http://10.10.1.10:1080", } requests.get("http://examp

随机推荐