xf1 xe1 xc3 xad u00f3 tildes que mostrar escribir coding python

python - xe1 - ¿Cuándo y por qué debo usar una tilde nombrada en lugar de un diccionario?



xc3 xad python (2)

Posible duplicado:
¿Qué son las "tuplas con nombre" en Python?

¿Cuál es la situación en la que se debe usar una táctica nombrada?

Cuando lo investigué, parecía una forma de hacer que las tuplas se pareciesen más a los diccionarios. ¿Cómo se comparan con los diccionarios?

¿Solo se pueden usar los mismos tipos de caracteres hashables para los diccionarios para las tiros con nombre?


Las tuplas son inmutables, ya sean nombradas o no. namedtuple solo hace que el acceso sea más conveniente, usando nombres en lugar de índices. Solo puede usar identificadores válidos para namedtuple , no realiza ningún hash, sino que genera un nuevo tipo.


En dict s, solo las teclas tienen que ser hashable, no los valores. namedtuple s no tiene claves, por lo que hashability no es un problema.

Sin embargo, tienen una restricción más estricta: sus equivalentes clave, "nombres de campo", tienen que ser cadenas.

Básicamente, si fuera a crear un conjunto de instancias de una clase como:

class Container: def __init__(self, name, date, foo, bar): self.name = name self.date = date self.foo = foo self.bar = bar mycontainer = Container(name, date, foo, bar)

y no cambie los atributos después de que los haya establecido en __init__ , podría usar

Container = namedtuple(''Container'', [''name'', ''date'', ''foo'', ''bar'']) mycontainer = Container(name, date, foo, bar)

como un reemplazo.

Por supuesto, podría crear un montón de dict , donde utilizó las mismas claves en cada una, pero suponiendo que solo tendrá identificadores de Python válidos como claves y no necesita mutabilidad,

mynamedtuple.fieldname

es más lindo que

mydict[''fieldname'']

y

mynamedtuple = MyNamedTuple(firstvalue, secondvalue)

es más lindo que

mydict = {''fieldname'': firstvalue, ''secondfield'': secondvalue}

Finalmente, namedtuple s se ordenan, a diferencia de dict s regulares, por lo que se obtienen los elementos en el orden en que se definieron los campos, a diferencia de un dict .