无法在函数python中传递列表和字典
以下是要求: 我们有一个嵌套对象,我们想要一个函数,你在对象中传递一个键,然后返回值无法在函数python中传递列表和字典,python,python-3.x,python-2.7,Python,Python 3.x,Python 2.7,以下是要求: 我们有一个嵌套对象,我们想要一个函数,你在对象中传递一个键,然后返回值 object = {“a”:{“b”:{“c”:”d”}}} key = a/b/c value = d 代码: from functools import reduce def deep_get(dictionary,keys, default=None): return reduce(lambda z, key: z.get(key, default) if isinstance(z, dict)
object = {“a”:{“b”:{“c”:”d”}}}
key = a/b/c
value = d
代码:
from functools import reduce
def deep_get(dictionary,keys, default=None):
return reduce(lambda z, key: z.get(key, default) if isinstance(z, dict) else default, keys.split("/"), dictionary)
object = {'a':{'b':{'c':'d'}}}
key = "a/b/c"
print (deep_get(object, key))
问题:如果我在键中传递“a”或“a/b”,我将获得输出,但预期输出应为无。所以,你能在这里帮助我吗?或者有没有更好的方法,我向所有人开放
谢谢只需检查
reduce
函数返回值的类型,并且仅当是str
时返回,如下所示:
from functools import reduce
def deep_get(dictionary,keys, default=None):
a = reduce(lambda z, key: z.get(key, default) if isinstance(z, dict) else default, keys.split("/"), dictionary)
if isinstance(a, str):
return a
else:
return None
object = {'a':{'b':{'c':'d'}}}
key = "a/b/c"
print (deep_get(object, key))
输入:“a/b/c”
输出:d
输入:“a/b”
输出:
None
只需检查reduce
函数返回值的类型,并且仅在为str
时返回,如下所示:
from functools import reduce
def deep_get(dictionary,keys, default=None):
a = reduce(lambda z, key: z.get(key, default) if isinstance(z, dict) else default, keys.split("/"), dictionary)
if isinstance(a, str):
return a
else:
return None
object = {'a':{'b':{'c':'d'}}}
key = "a/b/c"
print (deep_get(object, key))
输入:“a/b/c”
输出:d
输入:“a/b”
输出:
None
如果值是dict类型,您可以检查每个键,然后返回None您能帮我一点忙吗,我没有找到您,这将非常有用:)为什么您希望“a”
和“a/b”
的输出是None
?它们的值显然是各自嵌套的dict
。你想完全禁止返回dict
s吗?是的,我不希望a和a/b返回任何值。如果值是dict类型,你可以检查每个键,然后返回任何值。你能帮我一点忙吗,我没有得到你,这将非常有帮助:)为什么你希望“a”
和“a/b”
的输出是none
?它们的值显然是各自嵌套的dict
。您想完全禁止返回dict
s吗?是的,我不希望a和a/b返回