假设我有一个看起来像这样的列表,但深度和复杂性可能会有所不同:
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