[PYTHON] 파이썬 목록에서 중복을 제거하고 순서를 유지하는 방법? [복제]
PYTHON파이썬 목록에서 중복을 제거하고 순서를 유지하는 방법? [복제]
문자열 목록이 주어지면 사전 순으로 정렬하고 중복을 제거하려고합니다. 나는 내가 이것을 할 수 있다는 것을 안다.
from sets import Set
[...]
myHash = Set(myList)
하지만 알파벳 순서로 해시에서 목록 구성원을 검색하는 방법을 모르겠습니다.
나는 해시와 결혼하지 않으므로 이것을 달성 할 수있는 어떤 방법이든 효과가있다. 또한 성능은 문제가 아니므로 코드에서 명확하지만 빠르지 만 불투명하게 표현되는 솔루션을 선호합니다.
해결법
-
==============================
1.내장 함수를 사용하여 목록을 정렬하고 중복 제거 할 수 있습니다.
내장 함수를 사용하여 목록을 정렬하고 중복 제거 할 수 있습니다.
myList = sorted(set(myList))
-
==============================
2.입력 내용이 이미 정렬 된 경우이를 수행하는 더 간단한 방법이있을 수 있습니다.
입력 내용이 이미 정렬 된 경우이를 수행하는 더 간단한 방법이있을 수 있습니다.
from operator import itemgetter from itertools import groupby unique_list = list(map(itemgetter(0), groupby(yourList)))
-
==============================
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.속도보다는 오히려 당신이 명확한 것이라면, 이것은 매우 분명하다고 생각합니다.
속도보다는 오히려 당신이 명확한 것이라면, 이것은 매우 분명하다고 생각합니다.
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.>하지만 알파벳 순서로 해시에서 목록 구성원을 검색하는 방법을 모르겠습니다.
>하지만 알파벳 순서로 해시에서 목록 구성원을 검색하는 방법을 모르겠습니다.
실제로 주요 질문은 아니지만 나중에 참조 용으로 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.문자열 데이터의 경우
문자열 데이터의 경우
output = [] def uniq(input): if input not in output: output.append(input) print output
from https://stackoverflow.com/questions/479897/how-to-remove-duplicates-from-python-list-and-keep-order by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] Python readlines () 읽기 및 사용법 (0) | 2018.10.07 |
---|---|
[PYTHON] 중첩 된 사전의 항목에서 팬더 DataFrame 구성 (0) | 2018.10.07 |
[PYTHON] 파이썬 모범 사례와 securest를 사용하여 MySQL에 연결하고 쿼리 실행 (0) | 2018.10.07 |
[PYTHON] Pandas : 주어진 열의 DataFrame 행 합계 (0) | 2018.10.07 |
[PYTHON] TypeError : 'NoneType'객체는 파이썬에서 반복 가능하지 않습니다. (0) | 2018.10.07 |