从列表中获取唯一项?
我有一个列表,里面包含了多个列表,长得像这样:
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))
这样做是可以的,不过你最后得到的是一组元组,而不是一组列表。(当然,你可以把它再转换回列表的形式,但如果没有特别的理由,为什么要这么麻烦呢?)