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

Python - 병합된 사전을 중첩 사전으로 변환하는 방법

파이썬 딕셔너리는 키(key)와 값(value)의 쌍으로 데이터를 저장하는 핵심 자료구조입니다. 실무에서는 두 개 이상의 딕셔너리를 하나의 중첩 딕셔너리(nested dictionary)로 묶어야 하는 경우가 자주 발생합니다. 이 글에서는 여러 딕셔너리를 새로운 키와 함께 하나의 중첩 딕셔너리로 병합하는 두 가지 대표적인 방법을 예제 코드와 함께 소개합니다.

방법 1: 새 키에 직접 할당하기

가장 직관적인 방법은 빈 딕셔너리를 생성한 뒤, 병합할 각 딕셔너리를 원하는 새 키에 차례대로 할당하는 것입니다. 그러면 키가 지정된 중첩 딕셔너리가 완성됩니다.

예제

dictA = {'Sun': 1, 'Mon': 2}
dictB = {'Tue': 3, 'Sun': 5}

# 주어진 딕셔너리
print("DictA : ", dictA)
print("DictB : ", dictB)

# 키 접근과 dict() 활용
res = dict()
res['Nested_dict_1'] = dictA
res['Nested_dict_2'] = dictB

# 결과 출력
print("Nested Dictionary: \n", res)

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

출력

DictA : {'Sun': 1, 'Mon': 2}
DictB: {'Tue': 3, 'Sun': 5}
Nested Dictionary:
{'Nested_dict_1': {'Sun': 1, 'Mon': 2}, 'Nested_dict_2': {'Tue': 3, 'Sun': 5}}

방법 2: zip 함수 활용하기

zip() 함수는 키 목록과 딕셔너리 목록의 요소들을 순서대로 짝지어 튜플 형태로 묶어 줍니다. 여기에 dict() 함수를 적용하면 새 키와 입력 딕셔너리를 모두 포함하는 최종 중첩 딕셔너리를 한 번에 얻을 수 있습니다.

예제

dictA = {'Sun': 1, 'Mon': 2}
dictB = {'Tue': 3, 'Sun': 5}

# 주어진 딕셔너리
print("DictA : ", dictA)
print("DictB : ", dictB)

# zip 함수 활용
dict_keys = ['Nested_dict_1', 'Nested_dict_2']
all_dicts = [dictA, dictB]
res = dict(zip(dict_keys, all_dicts))

# 결과 출력
print("Nested Dictionary: \n", res)

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

출력

DictA : {'Sun': 1, 'Mon': 2}
DictB: {'Tue': 3, 'Sun': 5}
Nested Dictionary:
{'Nested_dict_1': {'Sun': 1, 'Mon': 2}, 'Nested_dict_2': {'Tue': 3, 'Sun': 5}}

두 방법 비교 및 정리

  • 키 직접 할당: 병합할 딕셔너리 수가 적고 고정적일 때 코드가 명확하고 읽기 쉽습니다.
  • zip + dict 조합: 딕셔너리가 리스트로 관리되거나 개수가 동적으로 변하는 상황에서 반복문 없이 간결하게 처리할 수 있어 확장성이 뛰어납니다.

상황에 맞는 방법을 선택하면 중첩 딕셔너리 구조를 깔끔하게 구성할 수 있습니다. 특히 설정값 관리나 그룹별 데이터 정리처럼 계층형 데이터가 필요한 작업에서 두 기법 모두 매우 유용하게 활용됩니다.