我有以下列表
a = [[a1, b1, c1, [d1, e1, f1],
[a2, b2, c2, [d2, e2, f2],
[a3, b3, c3, [d3, e3, f3]]
我怎样才能把它变成一个命名元组的列表,这样
a[0].val1
>>> a1
a[1].val2
>>> b2
a[0].box
>>> [d1, e1, f1]
我有以下列表
a = [[a1, b1, c1, [d1, e1, f1],
[a2, b2, c2, [d2, e2, f2],
[a3, b3, c3, [d3, e3, f3]]
我怎样才能把它变成一个命名元组的列表,这样
a[0].val1
>>> a1
a[1].val2
>>> b2
a[0].box
>>> [d1, e1, f1]
使用collections.namedtuple
类工厂创建命名元组类:
mynamedtuple = collections.namedtuple('mynamedtuple', ('val1', 'val2', 'val3', 'box'))
somenamedtuple = mynamedtuple('a1', 'a2', 'a3', ['d1', 'e1', 'f1'])
somenamedtuple.box # returns ['d1', 'e1', 'f1']
您可以使用列表推导转换现有列表:
a = [mynamedtuple(*el) for el in a]
集合模块中有namedtuple可用。
您可以使用和创建namedtuple
将由名称而不是元组索引引用的。