Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬(Python)에서 키를 활용해 두 딕셔너리 교집합 구하기

이 글에서는 파이썬에서 키(key)를 기준으로 두 딕셔너리의 교집합을 구하는 방법을 알아봅니다. 목표는 두 딕셔너리에 공통으로 존재하는 키만 담은 새로운 딕셔너리를 만드는 것입니다. 먼저 예시로 살펴보겠습니다.

입력:
dict_1 = {'A': 1, 'B': 2, 'C': 3}
dict_2 = {'A': 1, 'C': 4, 'D': 5}

출력:
{'A': 1, 'C': 3}

방법 1: 딕셔너리 컴프리헨션 활용

가장 일반적이고 가독성이 좋은 방법은 딕셔너리 컴프리헨션(dictionary comprehension)을 사용하는 것입니다. 아래 단계를 따라 코드를 작성해 보세요.

  • 두 개의 딕셔너리를 초기화합니다.
  • 첫 번째 딕셔너리를 순회하면서, 두 번째 딕셔너리에도 존재하는 키만 새 딕셔너리에 추가합니다.
  • 결과를 출력합니다.

예제

# 딕셔너리 초기화
dict_1 = {'A': 1, 'B': 2, 'C': 3}
dict_2 = {'A': 1, 'C': 4, 'D': 5}

# 공통 키 찾기
result = {key: dict_1[key] for key in dict_1 if key in dict_2}

# 결과 출력
print(result)

위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

출력

{'A': 1, 'C': 3}

이 방법은 오직 키의 존재 여부만 기준으로 삼기 때문에, 값이 서로 달라도 공통 키라면 첫 번째 딕셔너리의 값(예: 'C': 3)이 그대로 유지됩니다.

방법 2: 비트 AND(&) 연산자 활용

items() 메서드와 비트 AND 연산자를 조합하면 더 간결하게 처리할 수 있습니다. 다만 이 방법은 키와 값이 모두 동일한 항목만 필터링한다는 점에 주의해야 합니다.

예제

# 딕셔너리 초기화
dict_1 = {'A': 1, 'B': 2, 'C': 3}
dict_2 = {'A': 1, 'C': 4, 'D': 5}

# 공통 키 찾기
result = dict(dict_1.items() & dict_2.items())

# 결과 출력
print(result)

위 코드를 실행하면 다음과 같은 결과가 나옵니다.

출력

{'A': 1}

'C'는 두 딕셔너리에 모두 존재하지만 값이 각각 3과 4로 서로 다르기 때문에 결과에서 제외된 것을 확인할 수 있습니다.

마무리

두 방법의 차이를 정리하면 다음과 같습니다.

  • 딕셔너리 컴프리헨션: 공통 키를 기준으로 교집합을 구하며, 값은 첫 번째 딕셔너리의 값을 사용합니다.
  • & 연산자: 키와 값이 모두 일치하는 항목만 남깁니다.

요구 사항과 상황에 맞는 방법을 선택해서 사용하시면 됩니다. 궁금한 점이 있다면 댓글로 남겨주세요!