반응형
파이썬에서 dict 객체의 연합
이 질문에는 이미 답변이 있습니다.
어떻게 두 가지의 조합 계산합니까 dict
파이썬에서 객체 (key, value)
쌍 결과 IFF에 존재 key
입니다 in
중 하나 딕셔너리는 (중복이없는 한)을?
예를 들어 {'a' : 0, 'b' : 1}
and 의 합집합은 {'c' : 2}
입니다 {'a' : 0, 'b' : 1, 'c' : 2}
.
입력을 수정하지 않고도이 작업을 수행 할 수 있습니다 dict
. 이것이 유용한 예 : 현재 범위에있는 모든 변수와 그 값을 구하십시오.
이 질문 은 관용구를 제공합니다. dicts 중 하나를 dict()
생성자 에 대한 키워드 인수로 사용합니다 .
dict(y, **x)
중복은 다음의 값을 고려하여 해결됩니다 x
. 예를 들어
dict({'a' : 'y[a]'}, **{'a', 'x[a]'}) == {'a' : 'x[a]'}
당신은 또한 update
같은 dict 방법을 사용할 수 있습니다
a = {'a' : 0, 'b' : 1}
b = {'c' : 2}
a.update(b)
print a
두 사전
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))
둘 다 dicts 독립 및 갱신을 유지해야하는 경우는 모두 사전에 조회하는 단일 객체 생성 할 수 있습니다 __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
>>>
참고 URL : https://stackoverflow.com/questions/9819602/union-of-dict-objects-in-python
반응형
'IT story' 카테고리의 다른 글
if 문을 사용하여 div가 비어 있는지 확인 (0) | 2020.08.04 |
---|---|
MySQL 업데이트 쿼리에서 '필드 목록'오류의 알 수없는 열 (0) | 2020.08.03 |
Google Cloud Bigtable 및 Google Cloud Datastore (0) | 2020.08.03 |
"최대 요청 길이를 초과했습니다"잡기 (0) | 2020.08.03 |
C # 사전은 어떻게됩니까? (0) | 2020.08.03 |