프로그래밍
파이썬에서 리스트 중복 제거하기
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