본문 바로가기

Python

[python] list에서 중복되는 원소 지우기

반응형

 

python에서 리스트를 사용하다보면 안에 중복된 데이터를 지우고 싶을때가 있다.

루프를 돌면서 하나하나 비교해가면서 지우는 방법말고 다른 방법이 있나 찾아보니 아래와 같은 방법을 통해 중복되는 원소를 쉽게 지울 수 있다.

 

 

1. set 함수를 이용해서 중복제거

>>> data = [1, 2, 2, 3, 3, 5]
>>> data
[1, 2, 2, 3, 3, 5]
>>> set(data)
{1, 2, 3, 5}
>>> list(set(data))
[1, 2, 3, 5]

python의 set(집합) 함수를 사용하면 리스트 내의 원소들을 unique한 값만 뽑아서 반환한다.

다만 반환 데이터가 set 함수의 형태이기 때문에 이를 list 형태로 변환해줘야 한다.

 

 

 

2. dict.fromKeys함수를 이용해서 중복제거

>>> data = [1, 2, 2, 3, 3, 5]
>>> data
[1, 2, 2, 3, 3, 5]
>>> dict.fromkeys(data)
{1: None, 2: None, 3: None, 5: None}
>>> list(dict.fromkeys(data))
[1, 2, 3, 5]

dict.fromKeys 함수는 키 리스트로 딕셔너리를 생성하고 기본적으로 값은 모두 None으로 저장한다.

이때 중복된 키 값은 사라지고 unique한 키 값만 남게된다.

이렇게 반환된 dictionary 형태를 다시  list로 형변환 해주면 unique한 원소만 남게된다.

반응형