回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有一个很大的数据集(字典列表-我称之为ds),我需要用另一个字典列表(我称之为过滤器)对其进行过滤</p>
<p>我正在使用另一个问题的虚拟示例作为我的基础,遗憾的是无法找到答案:</p>
<p><strong>编辑:存在具有相同品牌和型号的多个元素</strong></p>
<pre><code>ds = [
{'make': 'Audi', 'model': 'A3', 'transmission': 'Manual'},
{'make': 'Audi', 'model': 'A3', 'transmission': 'Automatic'},
{'make': 'Audi', 'model': 'A1', 'transmission': 'Automatic'},
{'make': 'Seat', 'model': 'Acura', 'transmission': 'Manual'},
{'make': 'Seat', 'model': 'LEON', 'transmission': 'Manual'},
{'make': 'Skoda', 'model': 'Octavia', 'transmission': 'Manual'},
]
filters = [
{'make': 'Audi', 'model': 'A3'},
{'make': 'Seat', 'model': 'LEON'},
{'make': 'Skoda', 'model': 'Octavia'},
]
</code></pre>
<p>想要的输出:</p>
<pre><code>ds_filtered = [
{'make': 'Audi', 'model': 'A3', 'transmission': 'Manual'},
{'make': 'Audi', 'model': 'A3', 'transmission': 'Automatic'},
{'make': 'Seat', 'model': 'LEON', 'transmission': 'Manual'},
{'make': 'Skoda', 'model': 'Octavia', 'transmission': 'Manual'},
]
</code></pre>
<p>以下是我到目前为止编写的代码,但我希望避免循环,因为数据集很大,我希望过程更高效:</p>
<pre><code>ds_filtered = []
for f in filters:
ds_filtered += [d for d in ds if (d['make'] == f['make'] and d['model'] == f['model'])]
print(ds_filtered)
</code></pre>