如何删除包含重复第一个元素的二维列表中的那些一维列表?

How to delete those 1D lists within a 2D list which contains with duplicate 1st element?

假设我有一个二维列表(仅包含浮点数)-

a=[[1,2],[1,3],[2,5],[4,3],[3,4],[4,9]] 我想删除那些具有公共第一个元素并稍后出现的一维列表。例如-第一个列表 [1,2] 包含 1 作为第一个元素,因此删除第一个元素为 1 的下一个列表,在本例中是第二个列表 [1,3],然后我们取 [2,5] ,[4,3],[3,4] 和往常一样,但是因为我们已经采用了 [4,3],所以我们不会采用具有公共第一个元素 4.

的 [4,9]

所以最终输出应该是-

[[1,2],[2,5],[4,3],[3,4]]

如何在 Python 中完成此操作?我可以想到一些嵌套的 for 循环和一堆显然效率低下的 if else 语句,我希望 set/map/zip 函数有一个技巧,它更 Pythonic.

使用set()过滤掉重复项:

a = [[1, 2], [1, 3], [2, 5], [4, 3], [3, 4], [4, 9]]

out, seen = [], set()
for item in a:
    if not item[0] in seen:
        seen.add(item[0])
        out.append(item)

print(out)

打印:

[[1, 2], [2, 5], [4, 3], [3, 4]]
a=[[1,2],[1,3],[2,5],[4,3],[3,4],[4,9]]
k=[]
[a.remove(i) if i[0] in k else k.append(i[0]) for i in a]
print(a)