以下是一个示例代码,它演示了如何遍历嵌套字典以找到相似的值,并将它们添加到具有相同键的字典列表中:
def find_similar_values(dictionary):
result = {}
def traverse_dict(d, key):
if isinstance(d, dict):
for k, v in d.items():
new_key = f"{key}.{k}" if key else k
traverse_dict(v, new_key)
elif isinstance(d, list):
for i, item in enumerate(d):
new_key = f"{key}[{i}]"
traverse_dict(item, new_key)
else:
if key in result:
result[key].append(d)
else:
result[key] = [d]
traverse_dict(dictionary, "")
return result
# 示例用法
nested_dict = {
"a": {
"b": {
"c": [1, 2, 3],
"d": [4, 5, 6]
},
"e": {
"f": [1, 2, 3],
"g": [4, 5, 6]
}
},
"h": {
"i": {
"j": [7, 8, 9],
"k": [10, 11, 12]
},
"l": {
"m": [7, 8, 9],
"n": [10, 11, 12]
}
}
}
result = find_similar_values(nested_dict)
for key, values in result.items():
print(f"{key}: {values}")
输出结果:
a.b.c: [1, 2, 3]
a.b.d: [4, 5, 6]
a.e.f: [1, 2, 3]
a.e.g: [4, 5, 6]
h.i.j: [7, 8, 9]
h.i.k: [10, 11, 12]
h.l.m: [7, 8, 9]
h.l.n: [10, 11, 12]
在这个示例中,find_similar_values
函数遍历嵌套字典并使用递归来处理嵌套的情况。它检查字典的值是否是字典或列表类型,如果是,则继续递归遍历。如果值是其他类型(例如整数,字符串等),它将这个值添加到结果字典中,键是以点号分隔的路径。如果具有相同的键,则将相似值添加到值列表中。最后,函数返回结果字典,其中包含具有相同键的相似值列表。
上一篇:遍历嵌套字典项