您可以像这样使用
reduce和
reversed功能
>>> reduce(lambda res, cur: {cur: res}, reversed("foo/bar/baz".split("/")), 1){'foo': {'bar': {'baz': 1}}}
如果您使用的是Python
3.x,则需要
reduce从
functools
>>> from functools import reduce>>> reduce(lambda res, cur: {cur: res}, reversed("foo/bar/baz".split("/")), 1){'foo': {'bar': {'baz': 1}}}
在这里,的最后一个参数
reduce是起始值。它将从传递的iterable中一个接一个地取值,并使用结果和当前值调用该函数,然后在下一次之后,最后一个结果将是第一个参数,而当前值将是第二个参数。当迭代器用尽时,它将返回结果。
因此,执行过程将逐步进行,如下所示
假设
func是lambda函数,它会像这样反复调用
func(1, "baz") => {"baz": 1}func({"baz": 1}, "bar") => {"bar": {"baz": 1}}func({"bar": {"baz": 1}}, "foo") => {"foo": {"bar": {"baz": 1}}}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)