이 프로그램에서는 두 개의 딕셔너리가 주어지며, 이를 하나로 합치는(병합하는) 것이 목표입니다. 여기서는 update() 메서드를 사용합니다. update() 메서드는 한 딕셔너리의 키-값 쌍을 다른 딕셔너리에 삽입하여 두 딕셔너리를 병합할 때 활용할 수 있습니다.
코드에서는 첫 번째 딕셔너리가 두 번째 딕셔너리에 병합되며, update() 메서드는 None을 반환합니다. None을 반환한다는 것은 새로운 딕셔너리가 생성되지 않고, 기존 딕셔너리가 직접(in-place) 수정된다는 의미입니다.
예시
입력::
A = {'AAA': 10}
B = {'BBB': 20}
출력::
C = {'BBB': 20, 'AAA': 10}
알고리즘
1단계: 먼저 사용자 입력으로 두 개의 딕셔너리를 생성합니다. 2단계: update() 메서드를 사용해 병합합니다. 첫 번째 딕셔너리가 두 번째 딕셔너리에 병합됩니다. 3단계: 최종 딕셔너리를 화면에 출력합니다.
예제 코드
def Merge(dict1, dict2):
return(dict2.update(dict1))
# 드라이버 코드
d1 = dict()
d2 = dict()
data = input('이름과 학번을 ":"로 구분해 입력하세요 : ')
temp = data.split(':')
d1[temp[0]] = int(temp[1])
for key, value in d1.items():
print('이름: {}, 학번: {}'.format(key, value))
data = input('이름과 학번을 ":"로 구분해 입력하세요 : ')
temp = data.split(':')
d2[temp[0]] = int(temp[1])
for key, value in d2.items():
print('이름: {}, 학번: {}'.format(key, value))
# 이 함수는 None을 반환합니다
(Merge(d1, d2))
print("병합 후 딕셔너리 ::>", d2)
실행 결과
이름과 학번을 ":"로 구분해 입력하세요 : AAA:10
이름: AAA, 학번: 10
이름과 학번을 ":"로 구분해 입력하세요 : BBB:20
이름: BBB, 학번: 20
병합 후 딕셔너리 ::> {'BBB': 20, 'AAA': 10}
참고: 다른 병합 방법
update() 메서드 외에도 파이썬 3.5 이상에서는 {**dict1, **dict2} 언패킹 방식을, 파이썬 3.9 이상에서는 | 연산자(dict1 | dict2)를 사용해 새로운 딕셔너리를 생성하면서 병합할 수 있습니다. 원본 딕셔너리를 그대로 유지하고 싶다면 이러한 방법들이 더 유용합니다.