如何从列表列表中动态创建namedtuple?

时间:2017-08-23 21:02:56

标签: python namedtuple python-collections

所以我有一个名为templist的列表列表,如下所示:

[['C0', 1, 1], ['NA', 4, 5], ['NA', 3, 7], ['C3', 9, 3], ['NA', 8, 4], ['NA', 7, 5], ['C6', 6, 6], ['NA', 5, 10]]

为上面的列表创建一个namedtuple的方式是:

from collections import namedtuple

Vertex = namedtuple('Vertex', ['NAME', 'x', 'y'])

vertices = [
    Vertex('C0', 1, 1), 
    Vertex('NA', 4, 5), 
    Vertex('NA', 3, 7), 
    Vertex('C3', 9, 3), 
    Vertex('NA', 8, 4), 
    Vertex('NA', 7, 5), 
    Vertex('C6', 6, 6), 
    Vertex('NA', 5, 10)
           ]

上述命名元素在打印时必须如下所示

print vertices

[Vertex(NAME='C0', x=1, y=1), Vertex(NAME='NA', x=4, y=5), Vertex(NAME='NA', x=3, y=7), Vertex(NAME='C3', x=9, y=3), Vertex(NAME='NA', x=8, y=4), Vertex(NAME='NA', x=7, y=5), Vertex(NAME='C6', x=6, y=6), Vertex(NAME='NA', x=5, y=10)]

我需要它是这样的,因为我已经为此添加了另一个距离字段并将其转换为具有嵌套键值对的字典。 所以我绝对必须这样。(试图实施K-MEANS)

与此相关的其他答案,与此类似,[{3}}无法应用于此,因为这是一个列表列表。 编辑:它适用,您必须根据评论中的建议进行修改

我的问题是,如何以vertices

的格式从任何给定的列表列表中以templist的上述格式动态创建一个命名元组

换句话说,我想要做的就是提供templist格式的列表列表(因为该列表是由另一个函数生成的,所以每次运行程序时它都会改变)并生成动态的以vertices

的上述格式命名的元组

0 个答案:

没有答案