繁体   English   中英

python和动态ish lambda结合任何/所有匹配?

[英]python and dynamic-ish lambda combined with any/all matching?

我正在尝试做这样的事情:

filters = {'ok1': lambda x: x['a'] == 1, 'ok2': lambda x: x['b'] == 2}
d = [{'a': 1, 'b': 3}, {'a': 5, 'b': 2},{'a': 6, 'b': 7}]
c = filter(lambda z: filters['ok1'] and filters['ok2'], d)
e =  filter(lambda z: filters['ok1'] or filters['ok2'], d)
print(d)
print(c)
print(e)

在这里我可以配置lambda函数列表,然后通过该列表过滤项目列表。 在这里,由于逻辑(或者我可能甚至使用any()all()调用),我希望c项为零, e项为两项。

lambda z: filters['ok1'] and filters['ok2']毫无意义,应该为lambda z: filters['ok1'](z) and filters['ok2'](z)

您甚至都没有调用我相信的函数。

多亏Sraw的回答,我才能够弄清楚自己的追求,而我的所有/全部工作如下:

filters = {'ok1': lambda x: x['a'] == 1, 'ok2': lambda z: z['b'] == 2}
d = [{'a': 1, 'b': 3}, {'a': 5, 'b': 2},{'a': 6, 'b': 7}]
alls = filter(lambda x: all(filters[z](x) for z in filters), d)
anys = filter(lambda x: any(filters[z](x) for z in filters), d)
print(alls)
print(anys)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM