<p>另一个解决方案是记住处理过的键,如果已经看到了键,则返回不同的结果。这可以通过记忆来实现:</p>
<pre class="lang-py prettyprint-override"><code>def get_key_watcher():
keys_seen = set()
def key_not_seen(d):
key = d['key']
if key in keys_seen:
return False # key is not new
else:
keys_seen.add(key)
return True # key seen for the first time
return key_not_seen
</code></pre>
<p>你可以这样使用它:</p>
<pre class="lang-py prettyprint-override"><code>>>> filtered_dicts = filter(get_key_watcher(), dicts)
>>> filtered_dicts
[{'ppm_error': -5.441115144810845e-07, 'obs_ion': 1054.5045550349998, 'key': 'Y7'},
{'ppm_error': 2.3119997582222951e-07, 'obs_ion': 1047.547178035, 'key': 'Y9'},
{'ppm_error': -2.5532659838679713e-06, 'obs_ion': 741.339467035, 'key': 'Y4'},
{'ppm_error': 1.3036219678359603e-05, 'obs_ion': 1349.712302035, 'key': 'Y10'},
{'ppm_error': 3.4259216556970878e-06, 'obs_ion': 941.424286035, 'key': 'Y6'},
{'ppm_error': 1.1292770047090912e-06, 'obs_ion': 261.156025035, 'key': 'Y2'},
{'ppm_error': 9.326980606898406e-06, 'obs_ion': 667.3107950350001, 'key': 'Y5'}]
</code></pre>
<p>显然,它维持着词典的秩序。把字典放在第一位。你知道吗</p>