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



我有一个列表如下

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

('game', 'games')('games', 'game')对是相同的,但它们的顺序不同。

我正在尝试实现的输出

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

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

任何建议,非常感谢。

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

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

请注意,为了避免循环访问列表,最好在创建列表时首先执行此操作。

您可以对列表进行排序,然后使用列表推导式获取所有其他索引

lista = [i for i in sorted(tups)[::2]]
# [('challenge', 'challenges'), ('game', 'games'), ('generator', 'generators')]

最新更新