开发者

Get unique items from list of lists? [duplicate]

This question already has answers here: Uniqueness for list of lists (7 answers) Closed 5 years ago.

I have a list of lists that looks like this:

animal_groups = [['fox','monkey', 'zebra'], ['snake','elephant', 'do开发者_Python百科nkey'],['beetle', 'mole', 'mouse'],['fox','monkey', 'zebra']]

What is the best to remove duplicate lists? Using the above example, I am looking for code that would produce this:

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

I first thought I could use set(), but this doesn't appear to work on a list of lists. I also saw an example using itertools, but the code was not entirely clear to me. Thanks for the help!


uniq_animal_groups = set(map(tuple, animal_groups))

will do the trick, though you will end up with a set of tuples instead of a set of lists. (Of course you could convert this back to a list of lists, but unless there is a specific reason to do so, why bother?)


Convert the lists to tuples, and then you can put them into a set.

Essentially:

uniq_animal_groups = set(map(tuple, animal_groups))

If you prefer the result to be a list of lists, try:

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

or:

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


When you don't care about the sorting of internal lists, convert everything to sets first:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜