Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在函数python中传递列表和字典_Python_Python 3.x_Python 2.7 - Fatal编程技术网

无法在函数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返回