通过过滤器匹配字典(其他字典)

时间:2019-02-21 12:13:20

标签: python dictionary

这是我的字典变量和过滤器;

dict = {'company': 'Ferrari', 'model': 'Asd car', 'price': 50, color: 'red'}

filter = {'company': 'Ferrari', price:50}

在过滤器中,我可以根据需要添加键:值。

我想创建一个过滤器,可以在其中增加过滤器变量以进行过滤,以避免创建增量代码,如下所示:

if dict['company'] == filter['company']

如何通过过滤器的键和这些值来获取所有匹配的数据?

输出将是:

dict1 = {'company': 'Ferrari', 'model': 'Asd car', 'price': 50, color: 'red'}
dict2 = {'company': 'Renault', 'model': 'Asd car', 'price': 50, color: 'red'}

filter = {'company': 'Ferrari', price:50}

OUTPUT = {'company': 'Ferrari', 'model': 'Asd car', 'price': 50, color: 'red'}

只有第一个通过, dict1 ,它通过了过滤器。 第二个 dict2 未通过,并且公司的过滤条件不是“ Ferrari” 我想获得通过过滤器的字典。

2 个答案:

答案 0 :(得分:1)

此:

sentinel = object()
if all(dict.get(k, sentinel) == v for k, v in filter.items()):

答案 1 :(得分:1)

希望这就是你想要的

setf = set(myfilter.items()) # save space
if setf == (set(mydict.items()) & setf): # if pass 
    print(mydict) # do your stuff here