<p><strong>编辑:仅使用链图的方法</p>
<p>这里有一个单行线来做这个。它对字典中每个唯一键的子指令进行分组和组合</p>
<pre><code>from collections import ChainMap
L = [data1, data2, data3]
{k:dict(ChainMap(*[i.get(k) for i in L])) for k in dict(ChainMap(*L)).keys()}
</code></pre>
<pre><code>{'Height': {'Dong': 165.830651784016,
'Ding': 165.91779226416696,
'Dumba': 166.16402145150246,
'Kim': 155.830651784016,
'DDD': 155.91779226416696,
'Arambh': 156.16402145150246,
'Ajay': 145.830651784016,
'Bist': 145.91779226416696,
'Kay': 146.16402145150246}}
</code></pre>
<p>在演示案例上进行测试-</p>
<pre><code>d1 = {'a':{'x':1, 'y':2}, 'b':{'l':1, 'm':2}}
d2 = {'a':{'i':1, 'j':2}, 'b':{'w':1, 'z':2}}
L = [d1, d2]
{k:dict(ChainMap(*[i.get(k) for i in L])) for k in dict(ChainMap(*L)).keys()}
</code></pre>
<pre><code>#dictionaries for key a and b are respectively combined
{'a': {'i': 1, 'j': 2, 'x': 1, 'y': 2},
'b': {'w': 1, 'z': 2, 'l': 1, 'm': 2}}
</code></pre>
<hr/>
<p>下面是一种使用<code>collections.defaultdict</code>和<code>collections.ChainMap</code>的pythonic方法。我已经解释了下面的步骤</p>
<pre><code>from collections import ChainMap, defaultdict
L = [data1, data2, data3]
d = defaultdict(dict)
for key in dict(ChainMap(*L)).keys():
for i in L:
d[key].update(i.get(key))
d = dict(d)
print(d)
</code></pre>
<pre><code>{'Height': {'Dong': 165.830651784016,
'Ding': 165.91779226416696,
'Dumba': 166.16402145150246,
'Kim': 155.830651784016,
'DDD': 155.91779226416696,
'Arambh': 156.16402145150246,
'Ajay': 145.830651784016,
'Bist': 145.91779226416696,
'Kay': 146.16402145150246}}
</code></pre>
<ol>
<li><code>defaultdict(dict)</code>存储一个或多个dict</li>
<li><code>dict(ChainMap(*L)).keys()</code>获取列表中所有字典中存在的唯一键。在这种情况下,它只是<code>height</code></li>
<li>对于列表中的每个<code>key</code>和每个元素,键的字典将用该<code>key</code>的值更新</李>
<li>将此d转换为<code>dict</code></李>
</ol>