Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.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 如何实现通过嵌套字典查找密钥路径的函数max_leaf_path(d)?_Python_Dictionary - Fatal编程技术网

Python 如何实现通过嵌套字典查找密钥路径的函数max_leaf_path(d)?

Python 如何实现通过嵌套字典查找密钥路径的函数max_leaf_path(d)?,python,dictionary,Python,Dictionary,如果非字典值是整数(叶值),则给出嵌套字典,通过嵌套字典查找返回最大整数的键路径 d={ 'a': { '1': 10, '2': 20, '3': 30, }, 'b': { 'c': { '1': 100, '2': 200, '3': 300 } }, 'c': {} } 我还应该实现函数path\

如果非字典值是整数(叶值),则给出嵌套字典,通过嵌套字典查找返回最大整数的键路径

d={
    'a': {
        '1': 10,
        '2': 20,
        '3': 30,
    },
    'b': {
        'c': {
            '1': 100,
            '2': 200,
            '3': 300
        }
    },
    'c': {}
}
我还应该实现函数
path\u value(dictionary,path)
,该函数通过遵循路径返回嵌套字典结构中的值

max_leaf_path(d) # returns ['b', 'c', '3']

path_value(d,['b', 'c', '3'])==300

创建一个可以展平嵌套dict的函数。然后您可以很容易地找到最大值及其对应的键

>>> d = { 'a': { '1': 10, '2': 20, '3': 30, }, 'b': { 'c': { '1': 100, '2': 200, '3': 300 } }, 'c': {} }
>>> 
>>> flatten = lambda d, pref='': {k2:v2 for k,v in d.items() for k2,v2 in (flatten(v, pref+k) if isinstance(v, dict) else {pref+k:v}).items()}
>>> 
>>> max_leaf_path = lambda d: list(max(flatten(d).items(), key=lambda t: t[1])[0])
>>> max_leaf_path(d)
['b', 'c', '3']
>>> 
>>> path_value = lambda d, l: path_value(d[l[0]], l[1:]) if l else d
>>> path_value(d, ['b', 'c', '3'])
300

创建一个可以展平嵌套dict的函数。然后您可以很容易地找到最大值及其对应的键

>>> d = { 'a': { '1': 10, '2': 20, '3': 30, }, 'b': { 'c': { '1': 100, '2': 200, '3': 300 } }, 'c': {} }
>>> 
>>> flatten = lambda d, pref='': {k2:v2 for k,v in d.items() for k2,v2 in (flatten(v, pref+k) if isinstance(v, dict) else {pref+k:v}).items()}
>>> 
>>> max_leaf_path = lambda d: list(max(flatten(d).items(), key=lambda t: t[1])[0])
>>> max_leaf_path(d)
['b', 'c', '3']
>>> 
>>> path_value = lambda d, l: path_value(d[l[0]], l[1:]) if l else d
>>> path_value(d, ['b', 'c', '3'])
300

听起来是个有趣的家庭作业问题。你在努力解决它的过程中尝试了什么?我在嵌套字典上使用了for循环,但我不知道如何使用该条件..听起来像是一个有趣的家庭作业问题。你在努力解决它的过程中尝试了什么?我在嵌套字典上使用了for循环,但我不知道如何使用条件。。