在python中从元组列表中删除重复项

2024-10-01 00:34:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个元组列表,我想删除重复的元组。像这样。在

x = [['aaron','jeng'],['sdf','wqd'],['aaron','jeng']]

我想要这样的输出:

^{pr2}$

我怎么能用简单的方法做到呢?我可以编写代码来实现这一点,但有没有内置函数?在

编辑1:正如大家所建议的,我很抱歉称它们为元组。我指的是名单。谢谢您。在


Tags: 方法函数代码编辑列表内置建议元组
3条回答

使用元组列表很容易,您只需要set(x)。由于列表是列表的列表,而不是元组的列表,因此可以先转换它们:

set(tuple(i) for i in x)

退货:

^{pr2}$

或者,如果你想重新转换成你以前的列表:

[list(t) for t in (set(tuple(i) for i in x))]
# [['aaron', 'jeng'], ['sdf', 'wqd']]

这是一个列表。。。但无论如何,您可以使用临时集来确保没有重复:

x = [['aaron','jeng'],['sdf','wqd'],['aaron','jeng']]

seen = set()  # store here the visited tuples
y = [e for e in x if tuple(e) not in seen and not seen.add(tuple(e))]
# [['aaron', 'jeng'], ['sdf', 'wqd']]

如果您预先将内部列表转换为元组,它的性能将大大提高。在

如果不需要保留顺序,那么只需将内部列表转换为元组,并将x转换为set()。在

您的x值不包含元组列表,而是一个列表列表。如果它包含元组列表:

x = [('aaron','jeng'),('sdf','wqd'),('aaron','jeng')]
out = set([i for i in x])
print(list(out))

[('aaron', 'jeng'), ('sdf', 'wqd')]

相关问题 更多 >