IT story

파이썬에서 dict 객체의 연합

hot-time 2020. 8. 3. 17:39
반응형

파이썬에서 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

반응형