使用flatten_dict_items()函数将嵌套字典展开的实现方法
发布时间:2023-12-27 12:35:49
实现方法:
def flatten_dict_items(dictionary, parent_key='', separator='.'):
items = []
for key, value in dictionary.items():
new_key = f"{parent_key}{separator}{key}" if parent_key else key # 拼接新的键名
if isinstance(value, dict): # 如果值是字典类型,则递归调用展开函数,并拼接新键名
items.extend(flatten_dict_items(value, new_key, separator))
else:
items.append((new_key, value)) # 如果值不是字典类型,则添加键值对到items列表中
return items
使用例子:
dictionary = {
'A': {
'B': 1,
'C': {
'D': 2,
'E': {
'F': 3
}
}
},
'G': {
'H': 4
}
}
flattened_dict = flatten_dict_items(dictionary)
for key, value in flattened_dict:
print(key, value)
输出结果:
A.B 1 A.C.D 2 A.C.E.F 3 G.H 4
以上代码定义了一个flatten_dict_items()函数,该函数接受一个嵌套字典作为输入,将其展开为一个列表,列表中的每个元素是一个元组,包含了展开后的键名和对应的值。
函数通过遍历字典的每个键值对,判断值是否为字典类型。如果是字典类型,则递归调用展开函数,并将拼接好的新键名作为参数传递。如果不是字典类型,则直接将键值对添加到列表中。最后,函数返回一个包含展开后键值对的列表。
使用例子中的字典是一个嵌套的字典结构,包含了多层嵌套。通过调用flatten_dict_items()函数,将其展开为一个列表。然后使用循环遍历列表中的元素,并打印出展开后的键名和对应的值。
输出结果中展示了所有展开后的键名和对应的值,每一对键值对之间用空格分隔,如果键名有多级,则用.作为分隔符。
