SeouliteLab

[Python/파이썬] dictionary의 중복 제거 방법 본문

프로그래밍

[Python/파이썬] dictionary의 중복 제거 방법

Seoulite Lab 2024. 3. 5. 08:41

Python에서 dictionary는 중복된 키를 허용하지 않습니다. 하지만 때로는 중복된 값을 가진 여러 개의 키를 가진 dictionary를 다루어야 할 때가 있습니다. 이번 글에서는 dictionary에서 중복된 값을 제거하는 여러 가지 방법을 알아보겠습니다.

1. dict()와 중복 제거

dict() 함수를 사용하여 중복된 값을 제거할 수 있습니다. 이를 위해 dictionary의 키를 중복 없이 추출하고 이를 다시 dictionary의 키로 사용하여 새로운 dictionary를 생성합니다.

d = {'a': 1, 'b': 2, 'c': 1, 'd': 2}
result = dict((k, v) for k, v in d.items())
print(result)

2. set()을 이용한 중복 제거

set()을 이용하여 중복된 값을 제거한 후에 다시 dictionary로 변환할 수 있습니다. set은 중복된 값을 허용하지 않기 때문에 중복된 값을 제거할 수 있습니다.

d = {'a': 1, 'b': 2, 'c': 1, 'd': 2}
result = dict((k, v) for k, v in set(d.items()))
print(result)

3. collections 모듈의 OrderedDict를 이용한 중복 제거

collections 모듈의 OrderedDict를 사용하여 중복된 값을 제거할 수 있습니다. OrderedDict는 입력 순서를 유지하면서 중복된 값을 제거합니다.

from collections import OrderedDict

d = {'a': 1, 'b': 2, 'c': 1, 'd': 2}
result = OrderedDict((k, v) for k, v in d.items())
print(result)

4. 중복 제거 함수를 직접 구현하기

직접 중복 제거 함수를 구현하여 중복된 값을 제거할 수도 있습니다. 이를 위해 dictionary의 키를 중복 없이 추출하고 이를 이용하여 새로운 dictionary를 생성합니다.

def remove_duplicates(d):
    result = {}
    for key, value in d.items():
        if value not in result.values():
            result[key] = value
    return result

d = {'a': 1, 'b': 2, 'c': 1, 'd': 2}
result = remove_duplicates(d)
print(result)

5. 중복을 제거하고 새로운 dictionary 생성

중복된 값을 제거하고 새로운 dictionary를 생성하는 방법도 있습니다. 이를 위해 먼저 중복된 값을 제거한 후에 새로운 dictionary를 생성합니다.

d = {'a': 1, 'b': 2, 'c': 1, 'd': 2}
unique_values = set(d.values())
result = {k: v for k, v in d.items() if v in unique_values}
print(result)