Python의 목록에서 중복 항목을 제거하는 방법
순서를 유지하거나 무시하면서 Python의 목록에서 중복 항목을 제거하는 방법을 알아보세요. 집합 변환, dict 키 및 루프 방법을 비교합니다.
개요
중복 데이터는 데이터베이스 가져오기, 사용자 상호 작용 또는 로그 집계를 통해 목록에 자주 포함됩니다. 이러한 중복 항목을 제거하는 것은 고유성을 보장하고 다운스트림 논리의 중복을 방지하는 기본적인 데이터 정리 단계입니다. Python은 빠른 집합 변환부터 요소 순서를 존중하는 루프 기반 작업에 이르기까지 이를 달성하기 위한 여러 가지 기술을 제공합니다.
중복 요소를 제거하는 가장 빠르고 일반적인 방법은 `set()` 생성자를 사용하여 목록을 `set`으로 변환한 다음 다시 목록으로 변환하는 것입니다. 세트에는 중복 값이 포함될 수 없으므로 이 프로세스에서는 자동으로 중복 값을 삭제합니다. 이 접근 방식의 단점은 세트가 순서가 지정되지 않았다는 것입니다. 즉, 요소의 원래 순서가 손실된다는 의미입니다.
중복을 제거하는 동안 요소의 원래 순서를 유지하기 위해Python 3.7+는 내장 사전 클래스 `list(dict.fromkeys(my_list))`를 사용하는 영리한 솔루션을 제공합니다. 사전 키는 고유하고 삽입 순서를 유지하므로 이 방법은 시퀀스를 그대로 유지하면서 요소의 중복을 효과적으로 제거합니다. 사용자 정의 기준 또는 이전 버전의 Python의 경우 표시된 요소를 추적하기 위해 설정된 도우미를 사용하는 수동 루프도 매우 효과적입니다.
코드 및 실행 출력
이 스크립트는 세트, 사전 키 및 수동 루프를 사용하여 목록 요소 중복 제거를 보여줍니다.
numbers = [2, 1, 2, 3, 1, 4]
# Method 1: Using set() (Unordered)
unique_unordered = list(set(numbers))
print("Unordered unique:", unique_unordered)
# Method 2: Using dict.fromkeys() (Preserves order)
unique_ordered = list(dict.fromkeys(numbers))
print("Ordered unique:", unique_ordered)
# Method 3: Using a loop with a seen helper
seen = set()
unique_loop = []
for item in numbers:
if item not in seen:
seen.add(item)
unique_loop.append(item)
print("Loop unique:", unique_loop)Unordered unique: [1, 2, 3, 4]
Ordered unique: [2, 1, 3, 4]
Loop unique: [2, 1, 3, 4]단계별 구현
- set(my_list)를 사용하여 목록을 세트로 변환하여 즉시 중복을 제거합니다.
- 삽입 순서를 유지하면서 중복 항목을 제거하려면 list(dict.fromkeys(my_list))를 사용하세요.
- 사용자 정의 검증이 필요한 경우 루프에 도우미 세트를 사용하여 중복 항목을 필터링합니다.
자주 묻는 질문
큰 목록의 경우 가장 빠른 방법은 무엇입니까?
C 수준 최적화로 인해 세트로 변환하는 것이 가장 빠르며 dict.fromkeys()가 그 뒤를 따릅니다.
사전 목록의 중복을 제거하려면 어떻게 해야 하나요?
사전은 해시 불가능하므로 세트를 직접 사용할 수 없습니다. 고유한 ID/키를 기준으로 루프 또는 목록 이해 필터링을 사용해야 합니다.
관련 주제
권장 Python 리소스
관련 대화형 튜토리얼, 치트 시트, 코드 비교를 통해 지식을 확장하세요.
Python 목록
Python 목록에 대한 모든 것을 알아보세요. Python에서 배열을 기본적으로 생성, 분할, 수정 및 반복하는 방법을 알아보세요.
Python 목록 메서드 치트 시트
Python 목록 작업에 대한 빠른 참조 가이드입니다. 요소 추가, 삽입, 제거, 정렬 및 분할을 마스터합니다.
Python 대 JavaScript: 어떤 프로그래밍 언어가 가장 좋나요?
Python과 JavaScript를 포괄적으로 비교합니다. 구문 차이점, 성능, 사용 사례(백엔드와 프런트엔드) 및 코딩 예제를 살펴보세요.