Appia의 IT세상

파이썬[Python] 2개 이상의 딕셔너리(Dictionary) 합치기 본문

Python/Python 응용

파이썬[Python] 2개 이상의 딕셔너리(Dictionary) 합치기

Appia 2020. 4. 7. 07:02
반응형

파이썬[Python]에서 저는 가장 매력적인 데이터 타입이 딕셔너리(Dictionary)라고 생각합니다. 키와 값을 별도로 분리해서 관리하기 때문에 때론 이 부분이 클래스(Class)같기도 하고 때론 리스트 형태의 데이터 타입인것 같기도 합니다. 물론 이건 저의 개인적인 생각입니다. 

 

 딕셔너리(Dictionary)를 가지고 작업을 할때 다양한 니즈가 있을 수 있지만 저의 경우 가장 많은 니즈가 바로 2개 이상의 딕셔너리(Dictionary)의 합치는 것입니다. 물론 최신 버전에서는 매우 간단하게 사용가능합니다. 하지만, 파이썬[Python] 3.4 미만 버전 또는 2점대 버전을 사용하는 부분에서는 생각보다 번거로운 작업이 될 수 있습니다. 그래서 이번 포스팅에서는 이러한 딕셔너리(Dictionary)를 합치는 방법에 대해서 이야기 해보고자 합니다. 

 

크게 파이썬 버전에 따라 3.4이상 버전과 3.4미만 또는 2.x 버전을 별개로 다루어 보고자 합니다. 

 

파이썬[Python] 3.4 버전 이상

먼저 파이썬[Python] 3.4버전 이상에서는 매우 간단합니다. 다음 예시를 한번 살펴보겠습니다. 

example)

= {'a'1'b'2}
 
= {'b'10'c'11}
 
= { 'd'9,'z' : 14'y' : 13}
 
merged = {**x,**y,**z}
 
print(merged)
cs

result) 

{'a'1'b'10'c'11'd'9'z'14'y'13}
cs

이와 같이 {**x,**y,**z}를 통해서 딕셔너리(Dictionary)를 합칠 수 있습니다. 물론 키값이 중복된다면 나중에 언급된 딕셔너리(Dictionary)에 포함된 값으로 덮어쓰기가 됩니다. 생각보다 매우 간단합니다. 그럼 파이썬[Python] 3.4 버전 미만이나 2점대 버전에서 사용하는 방법에 대해서 한번 살펴 보도록 하겠습니다. 

 

파이썬[Python] 3.4 버전 미만 또는 2점대 버전

 

예전 버전에서는 **을 이용해서 딕셔너리(Dictionary)를 하나로 합칠 수 없기 때문에 다른 방법을 써야 합니다. 그래서 저는 하나의 함수를 만들어서 사용할 것을 권장합니다. 그럼 다음 함수 예시를 살펴보겠습니다. 

function)

def merge_two_dicts(x, y):
 
    z = x.copy()
    
    z.update(y)
    
    return z
cs

먼저, z에 기존 입력으로 받은 x를 복사합니다. 그런 후에 y 값을 업데이트 하고 나서 z를 반환하는 구조 입니다. 그럼 이 함수를 유용하여 다음 예제를 살펴보겠습니다. 

 

example) 

# Merge 함수 정의 
 
def merge_two_dicts(x, y):
 
    z = x.copy()
    
    z.update(y)
    
    return z
 
# 합쳐질 대상 선언
 
= {'a'1'b'2}
 
= {'b'10'c'11}
 
= { 'd'9,'z' : 14'y' : 13}
 
merged = merge_two_dicts(x,y)
 
# x,y 먼저 Merge진행 후 출력 
 
print(merged)
 
merged = merge_two_dicts(merged,z)
 
# x,y Merge진행 결과에 z Merge진행 후 출력 
 
print(merged)
cs

result) 

{'a'1'b'10'c'11}
 
{'a'1'b'10'c'11'd'9'z'14'y'13}
cs

 

첫번째 결과는 x, y를 합친 결과이고, 그 다음 결과는 앞서 합친 결과에 z를 합친 결과입니다. 파이썬[Python] 버전에 따라 조금 불편한 부분은 존재합니다. 저의 개인적인 생각으로는 이 뿐 아니라 다른 기능적인 문제로 인해서라도 신규 버전 적용이 더 유용하지 않을까라는 생각을 합니다. 

 

오늘은 딕셔너리(Dictionary)를 합치는 방법에 대해서 한번 살펴봤습니다. 혹시 궁금하시거나 문의 사항이 있으시면 언제든지 댓글 및 방명록에 글 남겨주시길 바랍니다. 

 

반응형
Comments