Get unique items from list of lists? [duplicate]

ぃ、小莉子 提交于 2020-01-09 09:39:05

问题


I have a list of lists that looks like this:

animal_groups = [['fox','monkey', 'zebra'], ['snake','elephant', 'donkey'],['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!


回答1:


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?)




回答2:


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)))



回答3:


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))))


来源:https://stackoverflow.com/questions/6926928/get-unique-items-from-list-of-lists

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!