사전 병합

※ Python 3.9 이후 더 간단한 방법은 참조추적: Python 3.9 이후!

Case1: 한 사전에서 다른 사전 추가(덮어쓰기)


결론


다음과 같이 업데이트 () 방법을 사용합니다.
d1 = {'one':1, 'two':2}
d2 = {'two':'ii', 'three':'iii'}
d1.update(d2)
print(d1)
# {'one': 1, 'two': 'ii', 'three': 'iii'}
중복된 키가 있는 경우 업데이트 () 의 내용이 우선적입니다. (내용으로 덮어쓰기)
또한 두 개의 사전을 동시에 추가한 경우 다음과 같다.
d1 = {'one':1, 'two':2}
d2 = {'two':'ii', 'three':'iii'}
d3 = {'three':'III', 'four':'IV'}
d1.update(d2,**d3)
print(d1)
# {'one': 1, 'two': 'ii', 'three': 'III', 'four': 'IV'}
별표 2개**가 무엇인지 후술두 별표의 정체을 참조하십시오.
또 3개 이상의 사전으로는 업데이트 () 를 할 수 없을 것 같습니다.

Case2: 두 사전을 결합한 새 사전 생성


결론


아래와 같다.
d1 = {'1':1, '2':2}
d2 = {'2':'ii', '3':'iii'}
d3 = dict(d1, **d2)
print(d3)
# {'1': 1, '2': 'ii', '3': 'iii'}
덮어쓰는 경우와 마찬가지로 중복된 키가 있는 경우 뒤에 지정된 사전의 내용이 우선합니다(내용으로 덮어쓰기).
또 3개 이상의 사전이 결합되지 않는 모습.
또한python3.5 이후dict()를 대체하여 사용할 수 있다{}.
사용{}, 아래와 같이 3개 이상의 사전을 동시에 결합할 수 있다.
d1 = {'one':1, 'two':2}
d2 = {'two':'ii', 'three':'iii'}
d3 = {'three':'III', 'four':'IV'}
d4 = {**d1, **d2, **d3}
print(d4)
# {'one': 1, 'two': 'ii', 'three': 'III', 'four': 'IV'}

두 별표의 정체


원격 데이터에 별표*를 추가하면 함수의 매개 변수로 마운트 해제할 수 있습니다.
특히 사전에 두 개의 별표를 더하면 키워드 매개 변수로 마운트 해제할 수 있다.
some_list = ['aaa', 'a', 'aaaa', 'aaaaa', '']
option = {
    'key':len,
    'reverse':True
}
some_list.sort(**option)
print(some_list)
# ['aaaaa', 'aaaa', 'aaa', 'a', '']
이 예에서 다시 배열된 기준key과 오름차순/내림차순reverse을 사전으로 정의하고sort() 함수의 키워드 매개 변수로 패키지화합니다.
그나저나 별표라면 사전 열쇠만 하역됩니다.(목록과 같은 동작이 됩니다.)
option = {
    'key':len,
    'reverse':True
}
print(*option)
# key reverse
option_list = ['key', 'reverse']
print(*option_list)
# key reverse

추적: Python 3.9 이후


3.9 이후에는 위처럼 복잡하지 않고 논리와 산자|를 사용하면 매우 간단하게 실현할 수 있습니다!
@shiracamus선생님이 알려주셨어요!
d1 = {'one':1, 'two':2}
d2 = {'two':'ii', 'three':'iii'}

# Case1: 片方の辞書にもう片方を追加する (上書き)
d1 |= d2
print(d1)
# {'one': 1, 'two': 'ii', 'three': 'iii'}

# Case2: 2つの辞書を結合した新しい辞書を生成する
d3 = d1 | d2
print(d3)
# {'one': 1, 'two': 'ii', 'three': 'iii'}
평소에 접촉하는 업무 시스템은 Python3.6에서 실행되기 때문에 사용할 수 없지만 편리하다~

좋은 웹페이지 즐겨찾기