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

时间:2011-08-03 13:08:21

标签: python duplicates

我有一个列表如下:

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 :(得分:16)

uniq_animal_groups = set(map(tuple, animal_groups))

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

答案 1 :(得分: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)))

答案 2 :(得分:0)

如果您不关心内部列表的排序,请先将所有内容转换为设置:

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