[Python] 리스트(list)에서 중복된 원소 제거하기
파이썬(Python) 리스트(list)에서 중복된 원소를 제거하는 방법을 정리
환경
- Python
중복된 원소들 제거
- 딕셔너리(dictionary)에 키 값으로 넣었다가 다시 리스트로 변환한다.
- 아래 방식으로 하면 리스트(list)에 집어 넣은 순서가 유지된다.
- 버전마다 방식이 달라서 맞게 사용해야 한다. 관련된 내용들은 하단 참고자료에 첨부했다.
Python 2.7 이상
OrderedDict.fromkeys(iterable[, value])
- 주어진 값들을 키 값으로 사용하는 딕셔너리(dictionary)를 반환한다.
value
가 있다면 모든 키 값들에 대해value
로 값이 정해지며 없다면None
이 된다. OrderedDict
: 파이썬 2.7부터 사용 가능iterable
에 추가된 원소들의 순서가 유지
예시
ex_list = [3, 4, 5, 6, 10, 1, 4, 5, 7, 8, 1, 5, 9]
from collections import OrderedDict
result = list(OrderedDict.fromkeys(ex_list))
print(result)
[3, 4, 5, 6, 10, 1, 7, 8, 9]
예시
ex_list = ['e', 'e', 'b', 'c', 'a', 'e', 'd', 'd', 'b', 'a']
from collections import OrderedDict
result = list(OrderedDict.fromkeys(ex_list))
print(result)
['e', 'b', 'c', 'a', 'd']
Python 3.7 이상
dict.fromkeys(iterable[, value])
- 주어진 값들을 키 값으로 사용하는 딕셔너리(dictionary)를 반환한다.
value
가 있다면 모든 키 값들에 대해value
로 값이 정해지며 없다면None
이 된다. - 파이썬 3.7부터
iterable
에 추가된 원소들의 순서가 유지 - 3.6에서는 일부 구현은 지원하고 일부는 지원하지 않음
예시
ex_list = [3, 4, 5, 6, 10, 1, 4, 5, 7, 8, 1, 5, 9]
result = list(dict.fromkeys(ex_list))
print(result)
[3, 4, 5, 6, 10, 1, 7, 8, 9]
예시
ex_list = ['e', 'e', 'b', 'c', 'a', 'e', 'd', 'd', 'b', 'a']
result = list(dict.fromkeys(ex_list))
print(result)
['e', 'b', 'c', 'a', 'd']
참고자료
- https://stackoverflow.com/questions/7961363/removing-duplicates-in-the-lists
- https://docs.python.org/release/2.6/search.html?q=OrderedDict&check_keywords=yes&area=default
- https://docs.python.org/release/2.7/search.html?q=OrderedDict&check_keywords=yes&area=default
- https://www.python.org/dev/peps/pep-0372/
- https://docs.python.org/3/whatsnew/3.6.html#summary-release-highlights
- https://docs.python.org/3/whatsnew/3.7.html#summary-release-highlights