티스토리 뷰
Stack Overflow에 자주 검색, 등록되는 문제들과 제가 개발 중 찾아 본 문제들 중에서 나중에도 찾아 볼 것 같은 문제들을 정리하고 있습니다.
Stack Overflow에서 가장 먼저 확인하게 되는 가장 높은 점수를 받은 Solution과 현 시점에 도움이 될 수 있는 가장 최근에 업데이트(최소 점수 확보)된 Solution을 각각 정리하였습니다.
아래 word cloud를 통해 이번 포스팅의 주요 키워드를 미리 확인하세요.
Is there any pythonic way to combine two dicts (adding values for keys that appear in both)?
두 개의 딕셔너리(둘 다 나타나는 키에 대한 값 추가)를 결합하는 파이썬스러운 방법이 있습니까?
문제 내용
For example I have two dicts:
예를 들어, 저는 두 개의 딕셔너리를 가지고 있습니다:
Dict A: {'a': 1, 'b': 2, 'c': 3}
Dict B: {'b': 3, 'c': 4, 'd': 5}
I need a pythonic way of 'combining' two dicts such that the result is:
저는 결과가 다음과 같이 되도록 두 개의 딕셔너리를 '결합'하는 파이썬스러운 방법이 필요합니다:
{'a': 1, 'b': 5, 'c': 7, 'd': 5}
That is to say: if a key appears in both dicts, add their values, if it appears in only one dict, keep its value.
즉, 키가 두 딕셔너리에 모두 나타나면 값을 추가하고, 하나의 딕셔너리에만 나타나면 값을 유지합니다.
높은 점수를 받은 Solution
Use collections.Counter
:
collections.Counter를을 사용합니다:
>>> from collections import Counter
>>> A = Counter({'a':1, 'b':2, 'c':3})
>>> B = Counter({'b':3, 'c':4, 'd':5})
>>> A + B
Counter({'c': 7, 'b': 5, 'd': 5, 'a': 1})
Counters are basically a subclass of dict
, so you can still do everything else with them you'd normally do with that type, such as iterate over their keys and values.
카운터는 기본적으로 딕셔너리의 자식클래스이므로 키 및 값에 대한 반복과 같이 해당 유형으로 일반적으로 수행하는 다른 모든 작업을 계속 수행할 수 있습니다.
가장 최근 달린 Solution
One line solution is to use dictionary comprehension.
한 줄짜리 해결책은 딕셔너리 내포를 사용하는 것입니다.
C = { k: A.get(k,0) + B.get(k,0) for k in list(B.keys()) + list(A.keys()) }
출처 : https://stackoverflow.com/questions/11011756/is-there-any-pythonic-way-to-combine-two-dicts-adding-values-for-keys-that-appe
'개발 > 파이썬' 카테고리의 다른 글
파이썬에서 새로운 딕셔너리 만들기 (0) | 2023.01.18 |
---|---|
Python dictionary를 dataframe으로 변환하는 방법 (0) | 2023.01.16 |
imdb.load_data() 호출 시 'Object arrays cannot be loaded when allow_pickle=False' 오류 수정하기 (0) | 2023.01.15 |
'ImportError: no module named win32api' 수정하기 (0) | 2023.01.15 |
현재 파이썬 스크립트 파일의 이름 및 실행 중인 줄 번호 가져오기 (0) | 2023.01.15 |