我有一本字典说 -
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']
答案 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()
。