python遍历字典的具体位置_用Python中的字典循环遍历字典列表的正确方法

我有车辆列表和过滤器字典.代码如下:

过滤词典如下:

filters = {

'make': 'SKODA',

'model': 'Fabia',

'fuel': 'Diesel',

'transmission': '',

'registration_year': '',

'price': {'start': 10000, 'stop': 12000}

}

车辆清单如下:

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}

]

因此,我想循环遍历所有车辆和所有过滤器并仅返回与过滤器匹配的车辆.在这种情况下,我应该只得到斯柯达.

我试过pydash库,但没有成功.

我尝试了什么如下:

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))

但是在这种情况下,我得到所有带有燃料类型柴油的车辆,但如果我们从0开始,我应该只获得第二辆,因此只有斯柯达.

知道我该怎么办?还有更好的方法或更清洁的代码吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值