从列表列表中获取唯一项目?

drb*_*sen 9 python duplicates

我有一个列表,看起来像这样:

animal_groups = [['fox','monkey', 'zebra'], ['snake','elephant', 'donkey'],['beetle', 'mole', 'mouse'],['fox','monkey', 'zebra']]
Run Code Online (Sandbox Code Playgroud)

删除重复列表的最佳方法是什么?使用上面的例子,我正在寻找可以产生这个的代码:

uniq_animal_groups = [['fox','monkey', 'zebra'], ['snake','elephant', 'donkey'],['beetle', 'mole', 'mouse']]
Run Code Online (Sandbox Code Playgroud)

我首先想到我可以使用set(),但这似乎不适用于列表列表.我也看到了一个使用的例子itertools,但代码对我来说并不完全清楚.谢谢您的帮助!

Sve*_*ach 18

uniq_animal_groups = set(map(tuple, animal_groups))
Run Code Online (Sandbox Code Playgroud)

虽然你最终会得到一组元组而不是一组列表,但它会做到这一点.(当然你可以将它转换回列表列表,但除非有特定的理由这样做,为什么要这么麻烦?)


Mic*_*ber 5

将列表转换为元组,然后您可以将它们放入集合中.

实质上:

uniq_animal_groups = set(map(tuple, animal_groups))
Run Code Online (Sandbox Code Playgroud)

如果您希望结果是列表列表,请尝试:

uniq_animal_groups = [list(t) for t in set(map(tuple, animal_groups))]
Run Code Online (Sandbox Code Playgroud)

要么:

uniq_animal_groups = map(list, set(map(tuple, animal_groups)))
Run Code Online (Sandbox Code Playgroud)