Skip to main content
 首页 » 编程设计

python之在python中过滤元组列表

2025年05月04日11落叶

我正在寻找一种干净的 pythonic 方式来执行以下操作

我有一个元组列表说:

[(1,'a'), (1,'b'), (1,'c'), (2, 'd'), (5, 'e'), (5, 'f')] 

我想创建一个新列表,该列表丢弃其第一个键之前已被看到的元组。所以上面的 o/p 是:

[(1,'c'), (2,'d'), (5, 'f')] 

谢谢!

请您参考如下方法:

一个简单的方法是创建一个字典,因为它只会保留具有相同键的最后一个元素:

In [1]: l = [(1,'a'), (1,'b'), (1,'c'), (2, 'd'), (5, 'e'), (5, 'f')] 
 
In [2]: dict(l).items() 
Out[2]: [(1, 'c'), (2, 'd'), (5, 'f')] 

更新:作为@Tadeck在他的评论中提到,由于不能保证字典项目的顺序,您可能想使用 ordered dictionary :

from collections import OrderedDict 
newl = OrderedDict(l).items() 

如果您真的想保留具有相同键的第一个元组(而不是最后一个,您的问题是模棱两可的),那么您可以先反转列表,将其添加到字典中并反转 的输出。 items() 再次。
尽管在那种情况下可能有更好的方法来实现这一点。