想象我有字符串列表作为输入。
然后我有一个 JSON 对象,其中包含
n
字符串“rules”列表:
input = ['a', 'b', 'c']
rules.json
{
"level_1": [ "a" ],
"level_2": [ "a", "b" ],
"level_3": [ "a", "b", "c"]
}
在这种情况下,
input
将“有资格成为”level_3
但如果
input = ["a", "c"]
那就“只有资格”level_1
是否有一种 Pythonic 方法可以实现此目的,而无需大量嵌套
for
循环和字符串比较?
仅供参考:
"a"
、"b"
和"c"
显然是占位符值,但在实际系统中,"a"
的输入始终是==
的规则值。
"a"
In [1]: o = {"level_1": [ "a" ],
...: "level_2": [ "a", "b" ],
...: "level_3": [ "a", "b", "c"]}
In [2]: i = ['a', 'b', 'c']
In [3]: next(filter(lambda x: o[x]==i,o))
Out[3]: 'level_3'
内置于 python 中。根据函数为 true 的 iterable 元素构造一个迭代器。 iterable 可以是序列、支持迭代的容器或迭代器。如果 function 为 None,则假定恒等函数,即删除所有为 false 的 iterable 元素。
请注意,如果 function 不是 None,则 filter(function, iterable) 相当于生成器表达式 (item for item in iterable if function(item));如果 function 为 None,则相当于 (item for item in iterable if item)。