0

所以我有一个这样的列表列表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]]

为上述列表创建命名元组的方式是:

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)
           ]

上面的 namedtuple 在打印时必须像这样

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)

与此相关的其他答案,例如此处的答案,从列表中创建命名元组不能适用于此,因为这是列表列表。编辑:它确实适用,您只需按照评论中的建议修改它

我的问题是,我如何vertices从任何给定的列表列表中动态创建上述格式的命名元组,格式为templist

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

4

0 回答 0