【发布时间】:2016-12-19 00:42:27
【问题描述】:
有没有办法将 python 可变命名列表转换或复制为不可变命名元组?
根据 cmets 进行编辑:
我有一个包含值的命名列表
>>> from namedlist import namedlist
>>> nl = namedlist('myList', 'a b c d')
>>> L = ['A', 'B', 'C', 'D']
>>> D = dict(zip(nl._fields,L))
>>> NL = nl(**D)
>>> NL
myList(a='A', b='B', c='C', d='D')
这个可变的命名列表 NL 可以这样改变:
>>> NL.a = 'X'
>>> NL
myList(a='X', b='B', c='C', d='D')
然后我还创建一个具有相同字段的名称元组
from collections import namedtuple
nt = namedtuple('myTuple', nl._fields)
问题
现在是否可以根据命名列表 NL 中的值创建一个不可变的命名元组 NT 填充值?
来自 cmets 的回答:
用途:
>>> NT = nt(*NL)
>>> NT
myTuple(a='X', b='B', c='C', d='D')
这个不可变的命名元组不能改变:
>>> NT.a = 'Y'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: can't set attribute
【问题讨论】:
标签: python-3.x immutability mutable namedtuple