我有以下格式的列表
[Data(Id=1, value='abc', ratio= 0.1),
Data(Id=2, value='def', ratio= 0.3),
Data(Id=3, value='ghi', ratio= 0.15),
Data(Id=4, value='xyz', ratio= 0.5)]
我想知道是否有一种pythonic方法可以将此列表转换为如下所示的元组列表
[(1, 'abc', 0.1), (2,'def',0.3), (3,'ghi',0.15), (4, 'xyz',0.5)]
我知道我可以解析列表中的每个元素,但这样效率非常低,我正在寻找一种可能有几条简单线条的pythonic方法。
答案 0 :(得分:1)
假设对象为collections.namedtuples
:
from collections import namedtuple
Data = namedtuple('Data', ['Id', 'value', 'ratio'])
s = [Data(Id=1, value='abc', ratio= 0.1), Data(Id=2, value='def', ratio= 0.3), Data(Id=3, value='ghi', ratio= 0.15), Data(Id=4, value='xyz', ratio= 0.5)]
new_s = [(i.Id, i.value, i.ratio) for i in s]
输出:
[(1, 'abc', 0.1), (2, 'def', 0.3), (3, 'ghi', 0.15), (4, 'xyz', 0.5)]
答案 1 :(得分:0)
[(d.Id, d.value, d.ratio) for d in data]
data
是您的清单。
请参阅:https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions