擅长:python、mysql、java
<p>使用<a href="https://docs.python.org/3/library/stdtypes.html#set" rel="nofollow noreferrer">^{<cd1>}</a>跟踪您已经看到的所有<code>(category, name)</code>对:</p>
<pre><code>lst = [
{'category': 'software', 'name': 'irssi', 'version': '1.2.0'},
{'category': 'software', 'name': 'irssi', 'version': '1.1.2'},
{'category': 'software', 'name': 'hexchat', 'version': '2.14.2'}
]
seen = set()
result = []
for dic in lst:
key = (dic['category'], dic['name'])
if key in seen:
continue
result.append(dic)
seen.add(key)
print(result)
# output: [{'category': 'software', 'name': 'irssi', 'version': '1.2.0'},
# {'category': 'software', 'name': 'hexchat', 'version': '2.14.2'}]
</code></pre>
<p>这可以概括为一个函数:</p>
^{pr2}$
<pre><code>>>> list(keep_first(lst, lambda d: (d['category'], d['name'])))
[{'category': 'software', 'name': 'irssi', 'version': '1.2.0'},
{'category': 'software', 'name': 'hexchat', 'version': '2.14.2'}]
</code></pre>