我有一个列表如下
[('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')]