복붙노트

[PYTHON] 파이썬 : 목록의 고유성

PYTHON

파이썬 : 목록의 고유성

이러한 데이터 객체를 고유하게 구현하는 효율적인 방법이 무엇인지 궁금합니다.

testdata =[ ['9034968', 'ETH'], ['14160113', 'ETH'], ['9034968', 'ETH'], ['11111', 'NOT'], ['9555269', 'NOT'], ['15724032', 'ETH'], ['15481740', 'ETH'], ['15481757', 'ETH'], ['15481724', 'ETH'], ['10307528', 'ETH'], ['15481757', 'ETH'], ['15481724', 'ETH'], ['15481740', 'ETH'], ['15379365', 'ETH'], ['11111', 'NOT'], ['9555269', 'NOT'], ['15379365', 'ETH']
]

각 데이터 쌍에 대해 왼쪽 숫자 문자열 PLUS는 오른쪽에있는 유형은 데이터 요소의 고유성을 나타냅니다. 그리고 testdata와 같은 목록을 반환하지만 고유 항목 만 존재합니다.

문안 인사

해결법

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

    1.세트를 사용할 수 있습니다 :

    세트를 사용할 수 있습니다 :

    unique_data = [list(x) for x in set(tuple(x) for x in testdata)]
    

    또한 주문을 보존하거나 보존하지 않는 여러 가지 방법을 벤치 마크하는이 페이지를 볼 수 있습니다.

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

    2.나는 @ Mark의 대답을 시도하고 오류가 발생했습니다. 목록과 각 요소를 하나의 튜플로 변환하면 제대로 작동합니다. 비록 이것이 최선의 방법인지 확실하지 않습니다.

    나는 @ Mark의 대답을 시도하고 오류가 발생했습니다. 목록과 각 요소를 하나의 튜플로 변환하면 제대로 작동합니다. 비록 이것이 최선의 방법인지 확실하지 않습니다.

    list(map(list, set(map(lambda i: tuple(i), testdata))))
    

    물론 똑같은 것이 목록 이해력을 사용하여 표현 될 수 있습니다.

    [list(i) for i in set(tuple(i) for i in testdata)]
    

    Python 2.6.2를 사용하고 있습니다.

    최신 정보

    @Mark는 그 이후로 그의 대답을 바 꾸었습니다. 그의 현재 답변은 튜플을 사용하고 작동합니다. 그래서 내 것이다 :)

    업데이트 2

    @Mark 덕분에. 튜플 목록이 아닌 목록을 반환하도록 내 대답을 변경했습니다.

  3. ==============================

    3.

    import sets
    testdata =[ ['9034968', 'ETH'], ['14160113', 'ETH'], ['9034968', 'ETH'], ['11111', 'NOT'], ['9555269', 'NOT'], ['15724032', 'ETH'], ['15481740', 'ETH'], ['15481757', 'ETH'], ['15481724', 'ETH'], ['10307528', 'ETH'], ['15481757', 'ETH'], ['15481724', 'ETH'], ['15481740', 'ETH'], ['15379365', 'ETH'], ['11111', 'NOT'], ['9555269', 'NOT'], ['15379365', 'ETH']]
    conacatData = [x[0] + x[1] for x in testdata]
    print conacatData
    uniqueSet = sets.Set(conacatData)
    uniqueList = [ [t[0:-3], t[-3:]] for t in uniqueSet]
    print uniqueList
    
  4. ==============================

    4.@Mark Byers 솔루션을 약간 확장하면 하나의 목록 이해 및 유형 변환만으로 필요한 것을 얻을 수 있습니다.

    @Mark Byers 솔루션을 약간 확장하면 하나의 목록 이해 및 유형 변환만으로 필요한 것을 얻을 수 있습니다.

    testdata = list(set(tuple(x) for x in testdata))
    

    또한, 많은 사람들이 혼동을 일으킬 정도로 목록 작성을 원하지 않는다면, for 루프에서 같은 것을 할 수 있습니다 :

    for i, e in enumerate(testdata):
        testdata[i] = tuple(e)
    testdata = list(set(testdata))
    
  5. from https://stackoverflow.com/questions/3724551/python-uniqueness-for-list-of-lists by cc-by-sa and MIT license