2022년 5월 1일 일요일

Python dict간 비교하기, list간 비교하기 (comparing dictionary, list)

1. list 비교

먼저 list의 비교부터 살펴보겠습니다.

list 는 내부 item의 내용과 순서 모두 확인 하기 때문에 비교시 순서도 맞아야합니다.

a = [1, 2, 3]
b = [3, 2, 1]
print(a==b)

b[0] = 1
b[2] = 3
print(a==b)

위와 같은 경우 결과는 False, True가 나옵니다.

False
True


2. dictionary 비교

이번에는 dict 타입입니다. dict는 key가 있기 때문에 key:value 순서쌍으로 비교해서 모두 같으면 True가 됩니다. 다음 예제를 보겠습니다.

a = {"a":1, "b":2 ,"c":3}
b = {"c":3, "b":2 ,"a":1}
c = {"a":1, "b":2 ,"c":2}

print(a==b) # 1
print(b==c) # 2

결과는 순서에는 관계가 없습니다.

True
False


3. 복합 비교

이번에는 좀 더 복잡한 예제입니다.

id() 함수가 나오는데 python에서 object id를 나타냅니다. 해당 id가 같으면 instance가 같다고 생각하면 됩니다.

d1 = {"a":1,"b":2}
d2 = {"b":3,"a":1}
d2["b"]=2
a = [1, 2, d1]
b = [1, 2, d2]

print("#1",id(d1),id(d2)) #1 2832145016384 2832145016448
print("#2",a==b)          #2 True

a = {"a":1, "b":2 ,"c":3}
b = {"c":3, "b":2 ,"a":1}
c = {"a":1, "b":2 ,"c":2}
a["a"] = []
b["a"] = []
print("#3",a,b)           #3 {'a': [], 'b': 2, 'c': 3} {'c': 3, 'b': 2, 'a': []}
print("#4",a==b)          #4 True

결과 d1, d2의 id가 다름에도 결과가 같음을 알 수 있습니다. 이는 내부적으로 key와 value를 일일이 확인한다고 생각하는게 좋습니다.

#1 2832145016384 2832145016448
#2 True
#3 {'a': [], 'b': 2, 'c': 3} {'c': 3, 'b': 2, 'a': []}
#4 True

list 와 dict 가 복잡하게 섞여있는 예제에서도 dict는 순서를 따지지 않고, list는 순서를 따지며 비교함을 알 수 있습니다.


댓글 없음:

댓글 쓰기