이 글에서는 파이썬에서 키(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로 서로 다르기 때문에 결과에서 제외된 것을 확인할 수 있습니다.
마무리
두 방법의 차이를 정리하면 다음과 같습니다.
- 딕셔너리 컴프리헨션: 공통 키를 기준으로 교집합을 구하며, 값은 첫 번째 딕셔너리의 값을 사용합니다.
- & 연산자: 키와 값이 모두 일치하는 항목만 남깁니다.
요구 사항과 상황에 맞는 방법을 선택해서 사용하시면 됩니다. 궁금한 점이 있다면 댓글로 남겨주세요!