프로그래밍

파이썬에서 리스트 중복 제거하기

walbe0528 2022. 2. 3. 10:49
728x90
반응형

파이썬 리스트에서 중복된 값을 제거하는 방법에는 세 가지가 있다.

1. set 자료형 이용(집합)

2. for문을 사용해 리스트를 돌며 중복 여부를 모두 체크

3. 딕셔너리(dictionary)를 이용한 중복 제거 

 

⚡SET(집합) 자료형 이용하기

 

 

set은 파이썬의 내장함수로, 중복되지 않은 원소(unique)를 얻고자 할 때 사용한다. 

set 자료구조의 특징은 중복이 없다는 점이다. 

data = ['A', 'C', 'B', 'A']
set_data = set(data)   # set으로 변환
list_data = list(set_data)  # 리스트로 변환
print(list_data)
# ['C', 'A', 'B'] 가 출력됨

위의 예제에서 set한 내용을 그대로 출력하면(리스트로 바꾸지 않고), {} 괄호에 묶여져 있다.

즉, 리스트로 값을 가져오길 원한다면, list(set(리스트)) 이다.  

 

단, set방식으로 중복을 제거할 경우, 순서가 뒤섞인다는 유의사항이 있다. 

순서를 지켜야하는 경우라면, 반복문을 사용한다. 

 

 

⚡for문을 사용해 리스트 돌며 중복 여부 체크하기

 

data = ['A', 'C', 'B', 'A']
result = []
for i in data:
	if i not in result:  # 해당 데이터가 없다면 추가해주고, 이미 존재한다면 넘어간다. 
    	result.append(i)

print(result)
# ['A', 'C', 'B'] 가 출력됨

리스트에 있는 모든 원소를 확인하며 새로 만든 result리스트에 해당 원소가 있는지 확인한 뒤에, 없으면 append시켜준다. 

 

⚡dictionary를 이용한 중복 제거 방법

 

파이썬에서 dictionary 자료구조도 set처럼 중복이 허용되지 않는다.

dictionary는 키(key), 값(value)의 한 쌍이 하나의 대응관계를 가지고 있는 자료형이다.

key 값은 중복되면 안된다는 특징을 이용한다. 

 

data = ['A', 'C', 'B', 'A']
result = dict.fromkeys(data)
print(result)

# {'A': None, 'C': None, 'B': None} 가 출력됨

result = list(result) # result = list(dict.fromkeys(data))
print(result)

# ['A', 'C', 'B'] 가 출력됨

dict.fromkeys(리스트)를 이용해서 중복을 제거할 수 있다. 

 

딕셔너리는 순서가 없고, 키와 값을 선언할 때는 콜론으로 구분한다. 

728x90