병합, 우리는DICT 파이썬 3.5 DICT 이해
>>> d1 = {1: 'one', 2: 'two'}
>>> d2 = {3: 'three'}
>>> {**d1, **d2}
{1: 'one', 2: 'two', 3: 'three'}
쿨 풀고 더블 플랫을 사용하여 dicts을 병합 할 수 있습니다. 그래도, 동적 사용 사례를 일반화하지 않는 것 :
>>> ds = [d1, d2]
>>> {**d for d in ds}
SyntaxError: dict unpacking cannot be used in dict comprehension
는 대신에 우리는 많은 추악한 것
reduce(lambda x,y: {**x, **y}, ds, {})
을 수행해야합니다. 그 표현식에 애매한 점이없는 것처럼 파서가 "한 가지 확실한 방법"을 허용하지 않는 이유는 무엇입니까?
다른 * 또는 ** - 압축 풀기 컨텍스트에서는이를 수행 할 수 없습니다. 즉, some_function (list_lists에서 x에 대해 * x)을 수행 할 수 없습니다. 언 패킹 별은 실제 연산자가 아니며 표현식에서 나타날 수 없습니다. – BrenBarn
''{k : v에 대한 [d1, d2]의 d에 대한 v, d.items()}의 v '는''('')의 대안이 될 것입니다. –
또 다른 대안은 개인적으로 마음에 들지 않는'dict (ChainMap (d2, d1))'입니다. 왜냐하면'ChainMap '이 어쨌든 누구를 알고 있기 때문입니까? –