how create python python-3.x namedtuple

python - create - ¿Cómo convertir tuple en namedtuple?



namedtuple python (1)

Me gustaría usar timbres nombrados internamente, pero quiero preservar la compatibilidad con los usuarios que me dan una tupla normal.

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


Puedes usar la sintaxis de llamadas *args :

namedPi = Record(*tuplePi)

Esto pasa en cada elemento de la secuencia tuplePi como un argumento separado.

También puede usar el método de clase namedtuple._make() para convertir cualquier secuencia en una instancia:

namedPi = Record._make(tuplePi)

Manifestación:

>>> 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'')