다음과 같이 dictionary에서 중복된 value를 갖고 있는 데이터가 있을 때, 중복된 데이터를 제거하는 방법을 소개합니다.
Original dict: {'a': 1, 'b': 2, 'c': 3, 'd': 2, 'e': 1}
Dict after removal: {'a': 1, 'b': 2, 'c': 3}
1. for loop(반복문)으로 딕셔너리 중복 제거 (1)
for loop로 구현하는 방법은 어렵지 않습니다. 먼저 순차적으로 dict를 탐색하며 중복된 value가 있으면 필터링하여 result에 등록되지 못하도록 합니다.
my_dict = {'a': 1, 'b': 2, 'c': 3, 'd': 2, 'e': 1}
seen = []
result = dict()
for key, val in my_dict.items():
if val not in seen:
seen.append(val)
result[key] = val
print(f'Original dict: {my_dict}')
print(f'Dict after removal: {result}')
Output:
Original dict: {'a': 1, 'b': 2, 'c': 3, 'd': 2, 'e': 1}
Dict after removal: {'a': 1, 'b': 2, 'c': 3}
2. for loop(반복문)으로 딕셔너리 중복 제거 (2)
위와 비슷하지만 약간 다른 방법으로 중복 제거하는 코드를 구현하였습니다.
딕셔너리에서 key는 같지만, value가 다를 때, dict[key] = value
를 수행하면 업데이트된다는 특징을 이용하여 아래와 같이 구현하였습니다.
위의 코드와 차이점은, 늦게 검색되는 것이 최종적으로 dict에 추가되는 데이터가 됩니다. 먼저 {value: key}
의 dict 형태로 중복된 것을 제거하고, 그 데이터를 다시 {key: value}
로 변환하여 dict로 만듭니다.
my_dict = {'a': 1, 'b': 2, 'c': 3, 'd': 2, 'e': 1}
dict_no_dup = dict()
result = dict()
for key, val in my_dict.items():
dict_no_dup[val] = key
for key, val in dict_no_dup.items():
result[val] = key
Output:
Original dict: {'a': 1, 'b': 2, 'c': 3, 'd': 2, 'e': 1}
Dict after removal: {'e': 1, 'd': 2, 'c': 3}
이 코드는 중복된 데이터가 있을 때, 순서가 앞에 있는 데이터가 삭제됩니다.
3. comprehension으로 딕셔너리 중복 제거
바로 위에서 for loop로 구현한 것을 dict comprehension으로 구현할 수도 있습니다.
my_dict = {'a': 1, 'b': 2, 'c': 3, 'd': 2, 'e': 1}
values = []
values = {val: key for key, val in my_dict.items()}
result = {val: key for key, val in values.items()}
print(f'Original dict: {my_dict}')
print(f'Dict after removal: {result}')
Output:
Original dict: {'a': 1, 'b': 2, 'c': 3, 'd': 2, 'e': 1}
Dict after removal: {'e': 1, 'd': 2, 'c': 3}
이 코드는 중복된 데이터가 있을 때, 순서가 앞에 있는 데이터가 삭제됩니다.
Loading script...
Related Posts
- Python 소수점 반올림, round() 예제
- 파이썬 주석 처리, 단축키 소개
- Python - String isdigit(), 문자열이 숫자인지 확인
- Python 소수점 버림, 4가지 방법
- Python - Text 파일 읽고 쓰는 방법 (read, write, append)
- Python - String Formatting의 다양한 방법 정리(%, Str formatting, f-stirng)
- Python - os.path.join(), 폴더와 파일명으로 Path 생성
- Python - 파일을 읽고 한 줄씩 리스트에 저장
- Python - 문자열에서 줄바꿈(\n) 제거, 3가지 방법
- Python - Switch Case 구현 방법 (Match Case)
- 우분투에 Python 3.10 설치하는 방법
- Python - 문자열에서 특정 문자 제거, 3가지 방법
- Python - 함수 정의 및 호출 방법
- Python - 딕셔너리 정리 및 예제
- Python - 딕셔너리 초기화, 4가지 방법
- Python - input() 함수로 데이터 입력 받기
- Python - Tuple 사용 방법
- Python - String startswith(), 어떤 문자열로 시작하는지 확인
- Python - 날짜에서 월 이름 가져오기(숫자 -> 영어 이름 변환)
- Python - 어떤 날짜가 몇 주차인지 확인
- Python - D-Day 계산, 몇일 남았는지 날짜 세기
- Python - 날짜가 무슨 요일인지 계산
- Python - 어떤 날짜가 주말인지, 평일인지 확인
- Python - XML 생성 및 파일 저장
- Python - 특정 월의 시작 날짜, 마지막 날짜 얻기
- Python - XML 파싱, 태그 또는 요소 별로 읽기
- Python 버전 확인 방법 (터미널, cmd 명령어)
- Python - Selenium에서 웹페이지의 제목 가져오는 방법
- Python - 디렉토리, 파일 사이즈 계산
- Python 버전 확인 방법 (스크립트 또는 Command line)
- Python - 함수에서 두개 이상의 값 리턴
- Python - CSV 파일 읽기, 쓰기
- Python - 코드 실행 시간 측정
- Python - 디폴트 매개변수(Default parameters)
- Python - filter() 사용 방법 및 예제