欢迎访问宙启技术站
智能推送

使用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()函数,将其展开为一个列表。然后使用循环遍历列表中的元素,并打印出展开后的键名和对应的值。

输出结果中展示了所有展开后的键名和对应的值,每一对键值对之间用空格分隔,如果键名有多级,则用.作为分隔符。