python - dictioanry == operator recursive check?

최대 1 분 소요

1-line summary

  • python dictionary에 대해서 == operator는 “내부 요소를 재귀적으로 파고들어가며 완전히 같은지를 확인”한다.

== operator in python dictionary

  • 보통, dictionary를 사용할 때, ‘복사’를 하거나, ==를 할때, 얘네가 deep copy하는지, shallow copy를 하는지 헷갈릴 때가 있죠.
  • python의 경우 고맙게도 dictionary, list 모두 deep equaility check를 해줍니다.
  • 아래 코드를 보시면, “nest dictionary”, “nest list”의 경우에도 비교하여 equality를 정확하게 체크해주죠.
print("== equaility check start") 
####################################
# dictionary의 경우
# False
dictA = {'a':{'a':10}}
dictB = {'a':{'a':3}}
assert dictA != dictB

# True
dictA = {'a':{'a':10}}
dictB = {'a':{'a':10}}
assert dictA == dictB

# True
dictA = {'a':1, 'b':2}
dictB = {'b':2, 'a':1}
assert dictA==dictB

####################################
# list의 경우
# False
lstA = [0, 1, {'a':1}]
lstB = [0, 1, {'a':3}]
assert lstA != lstB

lstA = [0, 1, {'a': 1, 'b': 4}]
lstB = [0, 1, {'a': 1, 'b': 4}]
assert lstA == lstB
print("== equaility check complete")

reference

댓글남기기