给定一个嵌套字典,其中非字典值是整数(叶子值),通过嵌套字典找到返回最大整数的键路径。
d={
'a': {
'1': 10,
'2': 20,
'3': 30,
},
'b': {
'c': {
'1': 100,
'2': 200,
'3': 300
}
},
'c': {}
}
此外,我应该实现函数 path_value(dictionary,path)
,该函数通过遵循路径返回嵌套字典结构中的值。
max_leaf_path(d) # returns ['b', 'c', '3']
path_value(d,['b', 'c', '3'])==300
创建一个可以展平嵌套字典的函数。然后就可以轻松找到最大值以及它对应的key
>>> 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
我是一名优秀的程序员,十分优秀!