복붙노트

[PYTHON] 파이썬 목록에서 중복을 제거하고 순서를 유지하는 방법? [복제]

PYTHON

파이썬 목록에서 중복을 제거하고 순서를 유지하는 방법? [복제]

문자열 목록이 주어지면 사전 순으로 정렬하고 중복을 제거하려고합니다. 나는 내가 이것을 할 수 있다는 것을 안다.

from sets import Set
[...]
myHash = Set(myList)

하지만 알파벳 순서로 해시에서 목록 구성원을 검색하는 방법을 모르겠습니다.

나는 해시와 결혼하지 않으므로 이것을 달성 할 수있는 어떤 방법이든 효과가있다. 또한 성능은 문제가 아니므로 코드에서 명확하지만 빠르지 만 불투명하게 표현되는 솔루션을 선호합니다.

해결법

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

    1.내장 함수를 사용하여 목록을 정렬하고 중복 제거 할 수 있습니다.

    내장 함수를 사용하여 목록을 정렬하고 중복 제거 할 수 있습니다.

    myList = sorted(set(myList))
    
  2. ==============================

    2.입력 내용이 이미 정렬 된 경우이를 수행하는 더 간단한 방법이있을 수 있습니다.

    입력 내용이 이미 정렬 된 경우이를 수행하는 더 간단한 방법이있을 수 있습니다.

    from operator import itemgetter
    from itertools import groupby
    unique_list = list(map(itemgetter(0), groupby(yourList)))
    
  3. ==============================

    3.원래 목록의 순서를 유지하려면 OrderedDict를 None으로 사용하십시오.

    원래 목록의 순서를 유지하려면 OrderedDict를 None으로 사용하십시오.

    파이썬 2에서 :

        from collections import OrderedDict
        from itertools import izip, repeat
    
        unique_list = list(OrderedDict(izip(my_list, repeat(None))))
    

    파이썬 3에서는 훨씬 더 간단합니다.

        from collections import OrderedDict
        from itertools import repeat
    
        unique_list = list(OrderedDict(zip(my_list, repeat(None))))
    

    반복기 (우편 번호와 반복 번호)가 마음에 들지 않으면 발전기를 사용할 수 있습니다 (2, 3 번 모두 작동).

        from collections import OrderedDict
        unique_list = list(OrderedDict((element, None) for element in my_list))
    
  4. ==============================

    4.속도보다는 오히려 당신이 명확한 것이라면, 이것은 매우 분명하다고 생각합니다.

    속도보다는 오히려 당신이 명확한 것이라면, 이것은 매우 분명하다고 생각합니다.

    def sortAndUniq(input):
      output = []
      for x in input:
        if x not in output:
          output.append(x)
      output.sort()
      return output
    

    O (n ^ 2)이지만 입력 목록의 각 요소에 대해 in을 반복적으로 사용합니다.

  5. ==============================

    5.>하지만 알파벳 순서로 해시에서 목록 구성원을 검색하는 방법을 모르겠습니다.

    >하지만 알파벳 순서로 해시에서 목록 구성원을 검색하는 방법을 모르겠습니다.

    실제로 주요 질문은 아니지만 나중에 참조 용으로 Rod의 답변은 sorted를 사용하여 dict의 키를 정렬 된 순서로 탐색하는 데 사용할 수 있습니다.

    for key in sorted(my_dict.keys()):
       print key, my_dict[key]
       ...
    

    또한 튜플이 튜플의 첫 번째 멤버에 의해 정렬되기 때문에 항목에서도 동일한 작업을 수행 할 수 있습니다.

    for key, val in sorted(my_dict.items()):
        print key, val
        ...
    
  6. ==============================

    6.문자열 데이터의 경우

    문자열 데이터의 경우

     output = []
    
         def uniq(input):
             if input not in output:
                output.append(input)
     print output     
    
  7. from https://stackoverflow.com/questions/479897/how-to-remove-duplicates-from-python-list-and-keep-order by cc-by-sa and MIT license