我正在寻找一种干净的 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() 再次。
尽管在那种情况下可能有更好的方法来实现这一点。
