Python 列表中的命名元组

Python 列表中的命名元组,python,Python,我有以下清单 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] 使用创建命名元组类: mynamedtuple = collections.na

我有以下清单

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]
使用创建命名元组类:

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,它将按名称而不是tuple的索引进行引用。

所以我必须遍历列表中的每个项目?如何展平列表中的每一行,使结果符合您在
mynamedtuple
之后描述的格式?@lejon:我添加了一段示例代码,用于将现有列表转换为命名元组;
*
做什么?@lejon:调用
mynamedtuple()
时,将
el
中的每个元素作为单独的参数应用。如果
el
[1,2,3]
,调用
mynamedtuple(*el)
就像调用
mynamedtuple(1,2,3)
@NathanBasanese:命名元组与常规元组一样工作:它们是不可变的。如果引用的其中一个值是可变的,那么是的,您仍然可以对该值进行变异。Python中的所有内容都是引用,没有任何内容是按值存储的。