복붙노트

[PYTHON] 목록의 목록에서 고유 항목 가져 오기? [복제]

PYTHON

목록의 목록에서 고유 항목 가져 오기? [복제]

나는 다음과 같은 목록을 가지고있다 :

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를 사용하는 예도 보았습니다. 그러나이 코드는 완전히 명확하지 않았습니다. 도와 주셔서 감사합니다!

해결법

  1. ==============================

    1.

    uniq_animal_groups = set(map(tuple, animal_groups))
    

    트릭을 수행 할 것입니다.하지만 일련의 목록 대신 튜플 세트를 사용하게 될 것입니다. (물론 목록을 목록으로 다시 변환 할 수 있지만 특별한 이유가 없으면 왜 귀찮을까요?)

  2. ==============================

    2.목록을 튜플로 변환하면 세트로 변환 할 수 있습니다.

    목록을 튜플로 변환하면 세트로 변환 할 수 있습니다.

    본질적으로 :

    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)))
    
  3. ==============================

    3.내부 목록 정렬에 신경 쓰지 않으면 먼저 모든 것을 세트로 변환하십시오.

    내부 목록 정렬에 신경 쓰지 않으면 먼저 모든 것을 세트로 변환하십시오.

    uniq_animal_groups  = map(list, set(map(tuple, map(set, animal_groups))))
    
  4. from https://stackoverflow.com/questions/6926928/get-unique-items-from-list-of-lists by cc-by-sa and MIT license