擅长:python、mysql、java
<p>可以使用<code>set</code>上的<code>intersection</code>和<code>symmetric_difference</code>函数完全避免原始循环:</p>
<pre class="lang-py prettyprint-override"><code># Shortened key names for brevity
a = [{"key": "a"}, {"key": "b"}, {"key": "c"}]
b = [{"key": "a"}, {"key": "d"}, {"key": "e"}]
# Turn both lists into sets
a_keys = {entry["key"] for entry in a}
b_keys = {entry["key"] for entry in b}
# Add elements that are in both sets with confidence set to 1
result = [{"key": key, "confidence": 1} for key in a_keys.intersection(b_keys)]
# Add elements that are not in both sets
result += [{"key": key} for key in a_keys.symmetric_difference(b_keys)]
</code></pre>
<p>将导致:</p>
<pre class="lang-py prettyprint-override"><code>[{'confidence': 1, 'key': 'a'},
{'key': 'b'},
{'key': 'd'},
{'key': 'c'},
{'key': 'e'}]
</code></pre>
<p>请注意,当元素通过<code>set</code>时,元素顺序将发生变化</p>