Skip to main content
 首页 » 编程设计

python之如何从元组列表中获取第 X 个元素的列表

2025年05月04日18cyq1162

我需要一个包含所有第一个元素的顺序列表和另一个包含元组列表中所有第二个元素的顺序列表。

sset = [('foo',1),('bar',3),('zzz',9)] 
x = ['foo','bar','zzz'] 
y = [1,3,9] 

我是这样做的:

x = [i for i,j in sset] 
y = [j for i,j in sset] 

有没有更简单的方法?

我可以使用 dict.keys() 和 dict.values() 但列表的顺序是否保持不变?此外,如果我的元组有 >2 个元素,则 dict 技巧将不起作用。

x,y = dict(sset).keys(), dict(sset).values() 

请您参考如下方法:

您可以使用 zip(),使用 splat 任意参数语法应用 sset *args:

x, y = zip(*sset) 

演示:

>>> sset = [('foo',1),('bar',3),('zzz',9)] 
>>> x, y = zip(*sset) 
>>> x 
('foo', 'bar', 'zzz') 
>>> y 
(1, 3, 9) 

这会创建元组,而不是列表;您可以根据需要将 zip() 输出映射到列表:

x, y = map(list, zip(*sset))