你有一些错误。如果我明白你需要什么,那么这对我有用。这是Python 3版本。对于 python 2,替换dict.items()
with dict.iteritems()
.
def compare(dict1, dict2):
for k1, v1 in dict1.items():
if k1 in dict2:
for k2, v2 in v1.items():
if v2 != dict2[k1][k2]:
return False
return True
例如,使用这些数据
dict1 = {
'battery1' : { 'Charge': 'enable', 'Discharge': 'enable' },
'battery2' : { 'Charge': 'enable', 'Discharge': 'enable' }
}
dict2a = {
'Estimated battery run-time': '05:00 minutes',
'battery1': {
'Device': 'controller',
'Discharge': 'enable',
'Charging State': 'Fully charged',
'Charge': 'enable'
},
'battery2': {
'Device': 'controller',
'Discharge': 'enable',
'Charging State': 'Fully charged',
'Charge': 'enable'
}
}
dict2b = {
'Estimated battery run-time': '05:00 minutes',
'battery1': {
'Device': 'controller',
'Discharge': 'enable',
'Charging State': 'Fully charged',
'Charge': 'disable'
},
'battery2': {
'Device': 'controller',
'Discharge': 'enable',
'Charging State': 'Fully charged',
'Charge': 'disable'
}
}
对每个字典运行它都会产生正确的答案(我认为)。
print(compare(dict1, dict2a)) # True
print(compare(dict1, dict2b)) # False