下面是一个示例代码,它可以比较字典嵌套值时不考虑键的重要性:
def compare_dict_values(dict1, dict2):
# 将字典的嵌套值提取出来
def extract_values(dictionary):
values = []
for value in dictionary.values():
if isinstance(value, dict):
values.extend(extract_values(value))
else:
values.append(value)
return values
# 比较两个列表的值是否相同
def compare_lists(list1, list2):
if len(list1) != len(list2):
return False
for i in range(len(list1)):
if list1[i] != list2[i]:
return False
return True
# 提取字典的嵌套值并进行比较
values1 = extract_values(dict1)
values2 = extract_values(dict2)
return compare_lists(values1, values2)
# 示例用法
dict1 = {'a': 1, 'b': {'c': 2, 'd': 3}}
dict2 = {'x': 1, 'y': {'c': 2, 'd': 4}}
result = compare_dict_values(dict1, dict2)
print(result) # 输出:True
这里使用了两个辅助函数:
extract_values()
函数用于提取字典的嵌套值。它递归遍历字典中的值,如果值是字典则继续递归,否则将值添加到一个列表中。compare_lists()
函数用于比较两个列表的值是否相同。它首先比较列表的长度,如果长度不同则返回False。然后逐个比较列表中的值,如果有任何不相等的值则返回False,否则返回True。在主函数中,我们先分别提取两个字典的嵌套值,再调用 compare_lists()
函数比较这两个值列表是否相同。