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

Python에서 두 딕셔너리(사전)를 비교하는 방법

Python에서 딕셔너리 비교의 기본: == 연산자

Python에서 딕셔너리(dict) 역시 하나의 클래스이며, 내부적으로 __eq__ 메서드가 오버라이드되어 있습니다. 그렇기 때문에 별도의 로직 없이 == 연산자만으로 두 딕셔너리가 서로 같은지 여부를 손쉽게 확인할 수 있습니다.

== 연산자는 두 딕셔너리가 동일한 키(key)와 값(value) 쌍을 모두 가지고 있는지를 비교합니다. 이때 키-값 쌍의 저장 순서는 비교 결과에 영향을 주지 않습니다.

예제

a = {'foo': 10, 'bar': 150}
b = {'foo': 10, 'bar': 150}
print(a == b)

출력

True

위 예제에서 a와 b는 완전히 동일한 키와 값을 가지고 있으므로 True가 출력됩니다. 반대로 키나 값 중 하나라도 다르면 False가 반환됩니다.

두 딕셔너리의 공통 항목 찾기

두 딕셔너리 사이에서 공통으로 존재하는 항목(키-값 쌍)의 목록이 필요하다면, items() 메서드로 항목들을 집합(set)으로 변환한 뒤 교집합 연산자인 &를 적용하면 됩니다.

예제

a = {'foo': 10, 'bar': 150}
b = {'foo': 10, 'baz': 50}

shared = set(a.items()) & set(b.items())
print(shared)

출력

{('foo', 10)}

실행 결과를 보면 두 딕셔너리에 모두 존재하는 ('foo', 10) 쌍만 추출된 것을 확인할 수 있습니다. 이 방식은 키뿐만 아니라 값까지 일치해야 공통 항목으로 인정됩니다. 만약 공통 키만 찾고 싶다면 a.keys() & b.keys()처럼 키 뷰 객체에 바로 교집합 연산을 적용하는 것도 가능합니다.