[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']


참고자료