Python에서 dict 객체의 결합
두 개의 합을 어떻게 계산합니까?dict
Python의 객체(여기서(key, value)
결과 iff에 쌍이 존재합니다.key
이in
dict(복사하지 않는 한) 중 어느 쪽입니까?
예를 들어, 의 결합은{'a' : 0, 'b' : 1}
그리고.{'c' : 2}
이{'a' : 0, 'b' : 1, 'c' : 2}
.
어떤 입력도 수정하지 않고 이 작업을 수행할 수 있는 것이 좋습니다.dict
. 이것이 유용한 예: 현재 범위 내의 모든 변수와 그 값의 dict를 가져옵니다.
이 질문은 관용어를 제공한다.dits 중 하나를 키워드 인수로 사용하여dict()
컨스트럭터:
dict(y, **x)
중복은 다음 값을 위해 해결됩니다.x
예를 들어,
dict({'a' : 'y[a]'}, **{'a', 'x[a]'}) == {'a' : 'x[a]'}
다음과 같은 받아쓰기 방법을 사용할 수도 있습니다.
a = {'a' : 0, 'b' : 1}
b = {'c' : 2}
a.update(b)
print a
정적 사전의 경우, 다른 딕트의 스냅샷을 결합합니다.
Python 3.9에서는 바이너리 "or" 연산자가|
는 사전을 연결하도록 정의되어 있습니다.(구체적인 새로운 사전이 열심히 작성되었습니다.)
>>> a = {"a":1}
>>> b = {"b":2}
>>> a|b
{'a': 1, 'b': 2}
반대로,|=
확장 할당이 구현되어 있는 것은 Calling과 같은 의미입니다.update
방법:
>>> a = {"a":1}
>>> a |= {"b": 2}
>>> a
{'a': 1, 'b': 2}
상세한 것에 대하여는, PEP-584 를 참조해 주세요.
Python 3.9 이전에 새로운 사전을 만드는 더 간단한 방법은 "star expansion"을 사용하여 새로운 사전을 만들고 각 서브사전의 내용을 추가하는 것입니다.
c = {**a, **b}
동적 사전 조합의 경우 결합된 라이브 딕트:
두 개의 dict가 모두 독립적이고 업데이트 가능한 상태로 유지되어야 하는 경우 두 개의 사전을 모두 쿼리하는 단일 개체를 만들 수 있습니다.__getitem__
방법(및 구현)get
,__contains__
기타 필요한 매핑 방법을 지정합니다).
미니멀리즘의 예는 다음과 같습니다.
class UDict(object):
def __init__(self, d1, d2):
self.d1, self.d2 = d1, d2
def __getitem__(self, item):
if item in self.d1:
return self.d1[item]
return self.d2[item]
효과가 있습니다.
>>> a = UDict({1:1}, {2:2})
>>> a[2]
2
>>> a[1]
1
>>> a[3]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 7, in __getitem__
KeyError: 3
>>>
NB: 두 개 이상의 사전의 Union "뷰"를 느긋하게 유지하려면 표준 라이브러리를 체크하십시오. 이는 위의 예에서는 고려되지 않은 사전 메서드와 코너 케이스가 모두 포함되어 있기 때문입니다.
두 개의 사전
def union2(dict1, dict2):
return dict(list(dict1.items()) + list(dict2.items()))
n 사전
def union(*dicts):
return dict(itertools.chain.from_iterable(dct.items() for dct in dicts))
언급URL : https://stackoverflow.com/questions/9819602/union-of-dict-objects-in-python
'programing' 카테고리의 다른 글
Java 'localhost:10.0'을 DISPLAY 변수 값으로 사용하여 X11 창 서버에 연결할 수 없습니다. (0) | 2023.01.30 |
---|---|
소수점 2자리까지 부동을 표시하는 JavaScript (0) | 2023.01.30 |
Jinja2에서 날짜 형식을 어떻게 써요? (0) | 2023.01.30 |
대용량 데이터 테이블에서 각 사용자의 첫 번째/마지막 행을 선택하는 SQL 퍼포먼스 (0) | 2023.01.30 |
Panda 데이터 프레임에서 행 목록을 삭제하는 방법은 무엇입니까? (0) | 2023.01.30 |