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中的所有内容都是引用,没有任何内容是按值存储的。