にマージし、我々はDictのは、Python 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(xはlist_listsのxに対して) 'を行うことはできません。アンパック星は実際の演算子ではなく、式では出現できません。 – BrenBarn
'{k:dの[d1、d2]のk、vのd.items()}'はあなたの 'reduce()'の代わりになりますが、まだ "醜い"です。 –
私は個人的に好きではない 'dict(ChainMap(d2、d1))'という別の選択肢があると信じています。 –