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循环,但我不知道如何使用条件。。