파이썬 리스트 중복 제거하는 방법

파이썬에서 중복을 제거하는 방법은 크게 세가지가 있습니다.

  1. 집합(set)을 이용해서 중복 제거하기
  2. for문 이용해서 중복 제거하기
  3. dict.fromkeys() 이용해서 중복 제거하기

예시1: 집합(set)을 이용해서 중복 제거하기

ex1 = "hello!"
ex2 =[1,0,0,4]

print(list(set(ex1)))
print(list(set(ex2)))

실행결과

['h', 'l', 'e', '!', 'o']
[0, 1, 4]

집합을 이용해서 중복된 원소를 제거하면 리스트의 순서가 뒤섞이는 것을 알 수 있습니다.

기존 리스트의 순서를 보존하면서 리스트의 중복을 제거하는 방법은 예시2,3번에서 설명하겠습니다.

예시2: for문 이용해서 중복 제거하기

ex1 = "hello!"
ex2 =[1,0,0,4]
list1 =[]
list2 =[]

for i in ex1:
 if i not in list1: 
  list1.append(i)
for i in ex2:
 if i not in list2:
  list2.append(i)  
  
print(list1)
print(list2)

실행결과

['h', 'e', 'l', 'o', '!']
[1, 0, 4]

예시3: dict.fromkeys() 이용해서 중복 제거하기

※dict.fromkeys()는 리스트의 원소를 ‘key’ 값으로 인식해 리스트를 딕셔너리로 만드는 함수입니다. 딕셔너리의 ‘key’값들은 중복될 수 없다는 것을 이용한 방법입니다.

ex1 = "hello!"
ex2 =[1,0,0,4]

list1 = list(dict.fromkeys(ex1))
list2 = list(dict.fromkeys(ex2))

print(list1)
print(list2)

실행결과

['h', 'e', 'l', 'o', '!']
[1, 0, 4]

※참고: dict.fromkeys() 정리하기

dict.fromkeys()는 리스트의 원소를 ‘key’ 값으로 인식해 리스트를 딕셔너리로 만드는 함수입니다.

ex1 = "hello!"

print(dict.fromkeys(ex1))

실행결과

{'h': None, 'e': None, 'l': None, 'o': None, '!': None}

이렇게 dict.fromkeys(ex1)을 하면 ex1의 원소들이 ‘key’값이 되는 딕셔너리가 만들어지게 됩니다. 이때 ‘value’값은 기본적으로 None 값이 주어지며 dict.fromkeys(ex1,100)을 입력하면 ‘value’값이 100이 됩니다.

ex1 = "hello!"

print(dict.fromkeys(ex1,100))

실행결과

{'h': 100, 'e': 100, 'l': 100, 'o': 100, '!': 100}

dict.fromkeys() 사용법

dict.fromkeys(리스트,’value’)