📌  相关文章
📜  Python – 将键值列表转换为平面字典(1)

📅  最后修改于: 2023-12-03 15:34:08.612000             🧑  作者: Mango

Python – 将键值列表转换为平面字典

在Python中,有时候我们需要将一个包含键值对的嵌套列表转换为一个平面的字典。这时候,我们可以使用python内置的字典推导式来实现这个功能。

代码实现

以下是一个将键值列表转换为平面字典的示例代码:

# 定义一个嵌套的键值对列表
nested_list = [('a', 1), ('b', 2), ('c', [('d', 3), ('e', 4)])]

# 将其转换为平面的字典
flat_dict = {k: v if not isinstance(v, list) else dict(v) for k, v in nested_list}

# 打印输出结果
print(flat_dict)

输出结果如下:

{'a': 1, 'b': 2, 'c': {'d': 3, 'e': 4}}
代码解析

上面的代码使用了一些Python的知识点,下面对其进行一些解析。

字典推导式
{k: v if not isinstance(v, list) else dict(v) for k, v in nested_list}

这段代码使用了Python内置的字典推导式,通过循环遍历嵌套列表中的键值对,创建一个新的字典。

字典推导式一般有以下的格式:

{key: value for key, value in iterable}

其中,iterable 可以是任何可迭代对象,可以是列表、元组、集合等,key 是一个表达式,用来计算字典键的值,value 是一个表达式,用来计算字典值的值。

上面的代码中,k 为键,v 为值,在判断 v 是否为列表之后,如果是一个列表,则将其转为字典( dict(v) )。如果 v 不是列表,则直接将其赋值给键 k

isinstance 函数
not isinstance(v, list)

这行代码使用了Python中的内置 isinstance 函数。 isinstance(object, classinfo) 函数用于判断一个对象是否是一个已知的类型,返回 True 或者 False。其中, object 是需要被判断类型的对象, classinfo 是类型,可以是一个元组,包含了多个类型。

上面的代码中,用 isinstance 函数判断 v 是否为列表, 如果不是列表,则直接将其赋值给键 k

dict 函数
dict(v)

这行代码使用了Python内置的 dict 函数。dict() 函数用于创建一个字典。

上面的代码中,如果字典值 v 为列表,则使用 dict(v) 将其转换为的字典类型。