回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有一份车辆清单和一份过滤器清单。代码如下:</p>
<p>过滤器字典如下:</p>
<pre><code>filters = {
'make': 'SKODA',
'model': 'Fabia',
'fuel': 'Diesel',
'transmission': '',
'registration_year': '',
'price': {'start': 10000, 'stop': 12000}
}
</code></pre>
<p>车辆清单如下:</p>
<pre><code>vehicles = [
{'make': 'AUDI', 'model': 'Q2 Dsl', 'type': '1.6 TDi Sport', 'fuel': 'Diesel', 'mileage': '19896', 'registration_year': '2017', 'transmission': 'Handbediende versnellingsbak', 'price': 17800},
{'make': 'AUDI', 'model': 'A6 SW Dsl', 'type': '2.0 TDi S line', 'fuel': 'Diesel', 'mileage': '87354', 'registration_year': '2013', 'transmission': 'Handbediende versnellingsbak', 'price': 52000},
{'make': 'SKODA', 'model': 'Fabia', 'type': '1.6 CR TDi GreenLine Active DPF', 'fuel': 'Diesel', 'mileage': '90613', 'registration_year': '2012', 'transmission': 'Handbediende versnellingsbak', 'price': 11000},
{'make': 'AUDI', 'model': 'A4 SW Dsl', 'type': '2.0 TDi S tronic', 'fuel': 'Diesel', 'mileage': '47402', 'registration_year': '2016', 'transmission': 'Sequentiele bak', 'price': 93000},
{'make': 'VOLKSWAGEN', 'model': 'Touran', 'type': '1.4 TSI Trendline', 'fuel': 'Essence', 'mileage': '28588', 'registration_year': '2017', 'transmission': 'Handbediende versnellingsbak', 'price': 87000},
{'make': 'AUDI', 'model': 'A4 Dsl', 'type': '2.0 TDi', 'fuel': 'Diesel', 'mileage': '66053', 'registration_year': '2014', 'transmission': 'Handbediende versnellingsbak', 'price': 62000}
]
</code></pre>
<p>因此,我想在所有车辆和所有过滤器之间循环,只返回那些与过滤器匹配的车辆。在这种情况下,我应该只得到斯柯达。你知道吗</p>
<p>我尝试了<code>pydash</code>库,但没有成功。你知道吗</p>
<p>我试过的是:</p>
<pre><code>def filter_item(vehicle):
vehicles = []
for key, value in filters.items():
if key == "price":
if vehicle[key] > value['start'] and vehicle[key] < value['stop']:
vehicles.append(vehicle)
else:
if vehicle[key] == value:
vehicles.append(vehicle)
return vehicles
result = py_.filter(vehicles, lambda x: filter_item(x))
</code></pre>
<p>但在这种情况下,我得到的是所有燃油类型为<strong>柴油的车辆,但如果从0开始,我应该只得到第二辆,因此只有<strong>斯柯达。</strong></p>
<p>你知道我该怎么做吗?有没有更好的方法或更干净的代码来做到这一点?你知道吗</p>