的字典修改值假设我有一个看起来像这样的列表,但在深度和复杂性可能会有所不同:Python。在未知深度
inc = {'root': 10,
'values': {
'left': {8: {
'left': {
6: {
'left': 5,
'right': 11}
},
'right': {
10: {
'left': 2,
'right': 11}
}}},
'right' : {
12: {
'left': 5,
'right': 20}
}}}
我需要做的是遍历它,找到最低的左值和最左边的值(即,通过访问字典的'左'元素达到的值)并交换它们。递归遍历字典以查找值不是问题。问题是在确定需要更改什么之后找到必要的值。
功能用于迭代:
leftmost = 0
lowest = 0
def walk_dict(d):
global leftmost, lowest
for k,v in sorted(d.items()):
if isinstance(v, dict):
walk_dict(v)
else:
if k == 'left':
if leftmost == 0:
leftmost = v
if v < lowest:
lowest = v
值得注意的是,这是一种在字典中存储二叉树的奇怪方法。我觉得使用嵌套列表更自然,或者做一些类似'{'value':5,'left':{'value':4},'right':{'value':7,'left' :{'value':12}}}'。 – Dougal 2013-03-22 23:05:59