如何将元组转换为namedtuple?

2024-06-16 11:09:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在内部使用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

Tags: 用户namefromimportvaluepirecordnamedtuple
1条回答
网友
1楼 · 发布于 2024-06-16 11:09:38

您可以使用*args调用语法:

namedPi = Record(*tuplePi)

这将把tuplePi序列的每个元素作为单独的参数传入。

您还可以使用^{} class method将任何序列转换为实例:

namedPi = Record._make(tuplePi)

演示:

>>> from collections import namedtuple
>>> Record = namedtuple("MyNamedTuple", ["ID", "Value", "Name"])
>>> tuplePi = (1, 3.14, "pi")
>>> Record(*tuplePi)
MyNamedTuple(ID=1, Value=3.14, Name='pi')
>>> Record._make(tuplePi)
MyNamedTuple(ID=1, Value=3.14, Name='pi')

相关问题 更多 >