python中的Diff多维字典

Mik*_*ike 6 python

我有两本词典

a = {'home': {'name': 'Team1', 'score': 0}, 'away': {'name': 'Team2', 'score': 0}}
b = {'home': {'name': 'Team1', 'score': 2}, 'away': {'name': 'Team2', 'score': 0}}
Run Code Online (Sandbox Code Playgroud)

密钥永远不会改变,但我想让['home'] ['score']改变

有什么简单的方法吗?

Cal*_*ngh 4

作为下意识的初步反应:

a = {'home': {'name': 'Team1', 'score': 0}, 'away': {'name': 'Team2', 'score': 0}}
b = {'home': {'name': 'Team1', 'score': 2}, 'away': {'name': 'Team2', 'score': 0}}

def valchange(d1, d2, parent=''):
    changes=[]
    for k in d1.keys():
        if type(d1[k])==type({}):
            changes.extend(valchange(d1[k], d2[k], k))
        else:
            if d1[k]!=d2[k]:
                if parent=='':
                    changes.append(k + ' has changed ')
                else:
                    changes.append(parent + '.' + k + ' has changed')
    return changes

print valchange(a,b)

>>>
['home.score has changed']    
Run Code Online (Sandbox Code Playgroud)