擅长:python、mysql、java
<p>要获取A中不在B中的项,仅基于键:</p>
<pre><code>C = {k:v for k,v in A.items() if k not in B}
</code></pre>
<p>要在A中获取不在B中的项,请基于键和值:</p>
<pre><code>C = {k:v for k,v in A.items() if k not in B or v != B[k]}
</code></pre>
<p>要更新就地(如<code>A -= B</code>)请执行以下操作:</p>
<pre><code>from collections import deque
consume = deque(maxlen=0).extend
consume(A.pop(key, None) for key in B)
</code></pre>
<p>(与对<code>A.pop</code>使用map()不同,如果a中不存在来自B的键,则使用无默认值调用<code>A.pop</code>不会中断。此外,与使用<code>all</code>不同,此迭代器使用者将遍历所有值,而不管弹出值的真实性如何。)</p>