更改元组的每个实例

时间:2019-08-19 09:48:48

标签: python python-3.x namedtuple

我正在尝试写功能来更改列表中的每个实例 元组。基本上我需要将列表的每个实例从('value',number,'value')转换为Arc('value',number,'value')

Input:   [('root', 1, 'a'), ('b', 0.0, 'root'), ('b', 2, 'c'), ('a', 5, 'd'), ('b', 7, 'a')]

def Convert(t):
    t1=('head', 'weight', 'tail')
    t2=namedtuple('Arc', (t1))
    return t2

Required Output: [Arc('root', 1, 'a'), Arc('b', 0.0, 'root'), Arc('b', 2, 'c'), Arc('a', 5, 'd'), Arc('b', 7, 'a')]

1 个答案:

答案 0 :(得分:0)

您可以使用list-comprehension将元组列表转换为命名元组列表:

t = [ ('root', 1, 'a'), ('b', 0.0, 'root'), ('b', 2, 'c'), ('a', 5, 'd'), ('b', 7, 'a') ]

from collections import namedtuple

Arc = namedtuple('Arc', 'head weight tail')

def Convert(t):
    return [Arc(*item) for item in t]

print(Convert(t))

打印:

[Arc(head='root', weight=1, tail='a'), Arc(head='b', weight=0.0, tail='root'), Arc(head='b', weight=2, tail='c'), Arc(head='a', weight=5, tail='d'), Arc(head='b', weight=7, tail='a')]