擅长:python、mysql、java
<p>我将计算键的并集,然后用一个helper方法将内部字典合并在一起重新构建字典(因为dict合并在3.6+内联中是可能的,但在此之前是不可能的)(<a href="https://stackoverflow.com/questions/38987/how-to-merge-two-dictionaries-in-a-single-expression">How to merge two dictionaries in a single expression?</a>)</p>
<pre><code>a={
"2001935072": {
"WR": "48.9",
"nickname": "rogs30541",
"team": 2
}
}
b= {
"2001935072": {
"wtr": 816
},
}
def merge_two_dicts(x, y):
"""Given two dicts, merge them into a new dict as a shallow copy."""
z = x.copy()
z.update(y)
return z
result = {k:merge_two_dicts(a.get(k,{}),b.get(k,{})) for k in set(a)|set(b)}
print(result)
</code></pre>
<p>结果:</p>
^{pr2}$
<p>注意事项:</p>
<ul>
<li><code>a.get(k,{})</code>允许获取<code>k</code>的值,默认值为so merge仍然有效,只保留<code>b</code>dict中的值</li>
<li><code>merge_two_dicts</code>只是一个<em>助手</em>函数。不能直接与<code>a</code>和<code>b</code>dicts一起使用,否则会产生错误的结果,因为最后合并的一个“wins”并覆盖其他dict值</li>
</ul>
<p>使用Python 3.6+:您可以在不使用任何helper函数的情况下执行此操作:</p>
<pre><code>result = {k:{**a.get(k,{}),**b.get(k,{})} for k in set(a)|set(b)}
</code></pre>