从字典创建lambda函数

时间:2013-09-03 10:20:45

标签: python lambda

我有一本字典说 -

d = {'sk':'123', 'number':'6790'}

和键可能是实时的,没有必要一直有相同数量的键,基本上它是一种过滤器。所以它也可能有

d = {'sk':'123', 'number':'6790', 'name':'some name'}

我想实时创建这种lambda函数..

[lambda i: i['sk'] == '123' and i['number']=='6790']

[lambda i: i['sk'] == '123' and i['number']=='6790' and i['name']=='some name'] 

1 个答案:

答案 0 :(得分:1)

只需遍历字典并测试所有项是否匹配:

lambda i, d=d: all(i[k] == v for k, v in d.iteritems())

其中d是你的字典。

如果i也是字典,您可以测试i是否为d的超集:

lambda i, d=d: i.viewitems() >= d.viewitems()

演示:

>>> d = {'sk':'123', 'number':'6790'}
>>> test = lambda i, d=d: i.viewitems() >= d.viewitems()
>>> test(d)
True
>>> test({'sk': '123', 'number': '6790', 'foo': 'bar'})
True
>>> test({'sk': '123', 'foo': 'bar'})
False

这都假定为Python 2;在Python 3中,用.iteritems()调用替换.viewitems().items()