擅长:python、mysql、java
<p>您可以将其分为两个阶段:</p>
<ol>
<li>通过添加列表来合并词典</li>
<li>从生成的合并词典中删除重复项</li>
</ol>
<p></p>
<pre><code>dict1={'result2': [{'2': '22'}, {'22': '222'}],
'result1': [{'1': '11'}, {'11': '111'}]}
dict2={'result2': [{'two': 'twentytwo'}, {'22': '222'}],
'result1': [{'one': 'eleven'}, {'11': '111'}]}
# merge phase
dict3 = {k:dict1.get(k,[])+dict2.get(k,[]) for k in {*dict1,*dict2}}
# uniqueness phase
dict3 = {k:[d for i,d in enumerate(v) if v.index(d)==i]
for k,v in dict3.items()}
print(dict3)
{'result2': [{'2': '22'}, {'22': '222'}, {'two': 'twentytwo'}],
'result1': [{'1': '11'}, {'11': '111'}, {'one': 'eleven'}]}
</code></pre>
<p>请注意,您可以将两个阶段合并到一个大型词典理解中:</p>
<pre><code>dict3 = {k: [d for i,d in enumerate(v) if v.index(d)==i]
for k in {*dict1,*dict2}
for v in [dict1.get(k,[])+dict2.get(k,[])] }
</code></pre>
<p>如果保证dict1和dict2具有相同的密钥,则整个过程可以更简洁地执行:</p>
<pre><code>dict3 = {k:v+[w for w in dict2[k] if w not in v] for k,v in dict1.items()}
</code></pre>