728x90
반응형
보통 List를 사용할 때 내부 중복 제거를 위해서 단순히 set으로 중복을 제거한 후, 다시 list로 변환하는 경우가 많은것 같다. 나 역시도 간단했기 때문에 제일 많이 사용한 방식이다.
sample_list = [1, 2, 3, 3, 4, 4, 5]
new_list = list(set(sample_list))
>>> new_list
>>> [3, 1, 4, 2, 5]
다만, Set을 사용하는 방식은 내부에 쌓아두었던 list의 순서가 무너진다는 단점이 있다. Python의 set 자체가 중복을 허용하지않으며, 동시에 Set 내부의 값들은 순서가 존재하지 않는 값으로 정의하기 때문이다.
이렇기 때문에 기존의 list 내부에 쌓아둔 값 순서를 유지하되, 중복을 제거할 경우 별도의 for문을 통해 신규 list를 만들어 주는것이 기존의 방식이었다.
new_list = []
for val in sample_list:
if val not in new_list:
new_list.append(val)
하지만, 이 for문, 한줄로 멋들어지게 짜지 않는 이상 솔직히 말해 코드가 좀 지저분해진다. 이 단점을 피하기 위해 새로 등장한 방식이 Collection Package의 OrderedDict를 사용하거나 Dictionary(Python3.7이상)를 활용하는 방식이다.
from collections import OrderedDict
new_list = list(OrderedDict.fromkeys(sample_list))
서치 후, 알게 된 사실로 Python 3.7 이상부터는 dictionary가 key값을 넣는 순서를 기억한다고 한다. 따라서, Collection의 OrderedDict와 비슷한 방식으로 기존의 Python Dictionary를 활용하면 간단하고 깔끔하게 중복을 제거할 수 있다.
#Python 3.7 이상부터 활용
new_list = list(dict.fromkeys(sample_list))
도움 주신 링크 : https://m31phy.tistory.com/130
728x90
반응형
'사소한 Tip . 오류 해결법 > python' 카테고리의 다른 글
[python] dictionary key-value 간단하게 바꾸기 (0) | 2022.05.11 |
---|---|
[python] 좌표값 정렬하기 (0) | 2022.04.14 |
[python]특정 경로 내 파일 존재 유무 확인 (0) | 2022.03.16 |
[python] 인터넷 크롤링(지마켓 상품명, 가격) / Python Crawling product name, price from online shopping mall (0) | 2022.03.15 |
[python/pytorch] Model GPU 메모리 사용량 체크 (0) | 2022.03.11 |