Python如何将两个嵌套列表对应元素配对生成目标字典结构
问题解决:嵌套列表配对生成对应字典列表
前提说明
Python 原生字典不允许存在重复键,你给出的预期结果中出现了多个相同键(例如第一个字典中的两个90),如果直接生成标准字典,后面的同名字段会覆盖前面的字段,最终仅会保留最后一个同键名的键值对。
方案1:生成标准字典列表(重复键会自动覆盖)
你之前的代码是把配对结果格式化为字符串,要生成字典只需要将配对好的(key, value)元组序列传入dict()构造函数即可。如果可以接受重复键被覆盖的特性,直接用dict()方法打包配对的子列表即可:
list_1 = [[100, 90, 90, 85, 70], [100, 90, 90, 85, 80], [105, 100, 90, 90, 85]] list_2 = [[1, 2, 2, 3, 4], [1, 2, 2, 3, 4], [1, 2, 3, 3, 4]] result = [dict(zip(l1, l2)) for l1, l2 in zip(list_1, list_2)]
运行后输出的结果为:
[{100: 1, 90: 2, 85: 3, 70: 4}, {100: 1, 90: 2, 85: 3, 80: 4}, {105: 1, 100: 2, 90: 3, 85: 4}]
方案2:保留所有配对关系(不丢失重复键数据)
如果需要完整保留所有位置对应的键值对,不因为键重复丢失数据,建议使用元组嵌套列表存储:
result = [[(a, b) for a, b in zip(l1, l2)] for l1, l2 in zip(list_1, list_2)]
运行后输出的结果为:
[[(100, 1), (90, 2), (90, 2), (85, 3), (70, 4)], [(100, 1), (90, 2), (90, 2), (85, 3), (80, 4)], [(105, 1), (100, 2), (90, 3), (90, 3), (85, 4)]]
完全匹配你预期的所有键值配对关系,没有数据丢失。
内容的提问来源于stack exchange,提问作者Adrian023
相关产品推荐
相关产品推荐

