下面是一个示例代码,展示了如何比较嵌套字典中的多个键:
def compare_nested_keys(dict1, dict2, keys):
for key in keys:
if key in dict1 and key in dict2:
if isinstance(dict1[key], dict) and isinstance(dict2[key], dict):
if not compare_nested_keys(dict1[key], dict2[key], keys):
return False
elif dict1[key] != dict2[key]:
return False
else:
return False
return True
# 示例数据
dict1 = {
'name': 'Alice',
'age': 25,
'address': {
'city': 'New York',
'country': 'USA'
}
}
dict2 = {
'name': 'Alice',
'age': 25,
'address': {
'city': 'San Francisco',
'country': 'USA'
}
}
# 比较多个键是否相等
keys_to_compare = ['name', 'age', 'address']
result = compare_nested_keys(dict1, dict2, keys_to_compare)
print(result) # 输出False,因为address中的city不相等
在示例中,compare_nested_keys
函数接受三个参数:两个嵌套字典和要比较的键列表。它通过递归地遍历字典的键来比较两个字典中的多个键。
在每一级的递归中,函数首先检查两个字典中是否都存在当前键。如果两个字典中都存在当前键,它会进一步检查该键对应的值是否都为字典类型。如果是字典类型,函数会递归地调用自身来比较两个字典的下一级键。如果不是字典类型,函数会直接比较两个字典的当前键对应的值是否相等。
如果在任何一级的递归中发现两个字典的当前键对应的值不相等,函数会返回False
。如果所有的键都比较完且对应的值都相等,函数会返回True
。
在示例中,我们比较了嵌套字典dict1
和dict2
中的多个键:name
、age
和address
。address
对应的值是一个嵌套字典,所以在递归比较时会进一步比较它的子键。由于address
中的city
不相等,最终返回False
。
上一篇:比较嵌套值合并嵌套字典
下一篇:比较前一列数据和下一列数据