擅长:python、mysql、java
<p>为了提高效率,我们首先对<code>b</code>中的名称进行<code>set</code>,然后<a href="https://docs.python.org/3/library/functions.html#filter" rel="nofollow noreferrer">filter</a>列表<code>a</code>:</p>
<pre><code>from operator import itemgetter
def returnOnlyOne(a, b):
b_names = set(map(itemgetter('name'), b))
only_in_a = list(filter(lambda item: item['name'] not in b_names, a))
return only_in_a
</code></pre>
<p>样本输出:</p>
<pre><code>a = [
{'name': 'joseph', 'age': 33},
{'name': 'Emma', 'age': 11},
{'name': 'apple', 'age': 44}
]
b = [
{'name': 'apple', 'age': 44},
{'name': 'Emma', 'age': 22}
]
print(returnOnlyOne(a, b))
# [{'name': 'joseph', 'age': 33}]
</code></pre>
<p>如果您不喜欢<code>itemgetter</code>、<code>filter</code>等等,您可以使用理解来编写相同的内容:</p>
<pre><code>def returnOnlyOne(a, b):
b_names = set(item['name'] for item in b)
return [ item for item in a if item['name'] not in b_names]
</code></pre>