Python:以随机顺序删除一对重复的字符串

时间:2018-10-07 08:06:25

标签: python python-3.x duplicates

我有一个如下列表

[('generators', 'generator'), ('game', 'games'), ('generator', 'generators'), ('games', 'game'), ('challenge', 'challenges'), ('challenges', 'challenge')]

('game', 'games')('games', 'game')有点相同,但是顺序不同。

我想要实现的输出

[('generators', 'generator'), ('games', 'game'), ('challenge', 'challenges')]

如何从上面的列表中删除配对?

任何建议,深表感谢。

2 个答案:

答案 0 :(得分:4)

您可以在集合中使用无序的可哈希数据结构。 frozenset()是您的朋友在这里:

In [7]: {frozenset(i) for i in your_list}
Out[7]: 
{frozenset({'generator', 'generators'}),
 frozenset({'game', 'games'}),
 frozenset({'challenge', 'challenges'})}

请注意,为避免循环遍历列表,最好在创建列表时首先进行此操作。

答案 1 :(得分:1)

您可以对列表进行排序,然后使用列表理解

获取其他所有索引
lista = [i for i in sorted(tups)[::2]]
# [('challenge', 'challenges'), ('game', 'games'), ('generator', 'generators')]