从列表中获取唯一项?

12 投票
3 回答
13118 浏览
提问于 2025-04-16 22:47

我有一个列表,里面包含了多个列表,长得像这样:

animal_groups = [['fox','monkey', 'zebra'], ['snake','elephant', 'donkey'],['beetle', 'mole', 'mouse'],['fox','monkey', 'zebra']]

我想知道有什么好的方法可以去掉重复的列表?根据上面的例子,我希望能得到这样的结果:

uniq_animal_groups = [['fox','monkey', 'zebra'], ['snake','elephant', 'donkey'],['beetle', 'mole', 'mouse']]

我最开始想用 set(),但是发现它在处理列表中的列表时似乎不太管用。我还看到一个用 itertools 的例子,但那个代码我不是很明白。谢谢大家的帮助!

3 个回答

0

当你不在乎内部列表的排序时,先把所有东西转换成集合:

uniq_animal_groups  = map(list, set(map(tuple, map(set, animal_groups))))
5

把列表转换成元组,然后你就可以把它们放进一个集合里。

简单来说:

uniq_animal_groups = set(map(tuple, animal_groups))

如果你希望结果是一个列表的列表,可以试试:

uniq_animal_groups = [list(t) for t in set(map(tuple, animal_groups))]

或者:

uniq_animal_groups = map(list, set(map(tuple, animal_groups)))
21
uniq_animal_groups = set(map(tuple, animal_groups))

这样做是可以的,不过你最后得到的是一组元组,而不是一组列表。(当然,你可以把它再转换回列表的形式,但如果没有特别的理由,为什么要这么麻烦呢?)

撰写回答