如何从由列表构成的列表中生成指定结构的嵌套字典
Python 嵌套列表转指定结构嵌套字典的实现方案
问题分析
你提供的原有代码逻辑是对输入列表做转置处理,按列生成键值对,最终得到的是列优先的字典结构,和你需要的行优先的嵌套结构方向相反。
实现代码
首先定义输入数据:
# 输入示例(如果a/b/c是变量请提前完成定义,这里为了可运行先写成字符串形式) rows = [['a', 'b', 'c'], [1, 'a', 'x'], [2, 'b', 'y']]
一行字典推导式即可完成需求:
output = {idx: dict(zip(rows[0], row)) for idx, row in enumerate(rows[1:])}
逻辑说明
rows[0]取出第一个子列表作为所有内层字典的公共键enumerate(rows[1:])遍历除第一个子列表外的所有数据行,同时拿到对应的序列索引作为外层字典的键zip(rows[0], row)将公共键和当前行的元素按位置一一配对,转成dict后直接得到符合要求的内层嵌套字典
输出验证
运行后打印output即可得到你期望的结果:
{0: {'a': 1, 'b': 'a', 'c': 'x'}, 1: {'a': 2, 'b': 'b', 'c': 'y'}}
内容的提问来源于stack exchange,提问作者Enrique Ortiz de Zárate
相关产品推荐
相关产品推荐

