You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将列表的列表数据映射到已声明键的字典并生成字典列表(Python2/3实现)

Python实现子列表转指定键的字典列表

刚好碰到过类似的需求,我来给你分享Python3和Python2的实现方案,保证能完美匹配你的要求:

Python3 实现方案

核心思路是把字典d的键和每个子列表的元素一一配对,用dict(zip())生成对应的字典,再通过列表推导式批量处理所有子列表。

x = [['x1', 'x2', 'x3', 'x4', 'x5', 'x6', 'x7', 'x8', 'x9', 'x10', 'x11'], 
     ['x1', 'x2', 'x3', 'x4', 'x5', 'x6', 'x7', 'x8', 'x9', 'x10', 'x11'], 
     ['x1', 'x2', 'x3', 'x4', 'x5', 'x6', 'x7', 'x8', 'x9', 'x10', 'x11']]
d = {"x": None, "y": None, "z": None, "t": None, "a": None, "s": None, "m": None, "n": None, "u": None, "v": None, "b": None}

# 获取字典的键列表,Python3中dict.keys()返回视图对象,转成列表更稳妥
keys = list(d.keys())
# 列表推导式生成目标字典列表
result = [dict(zip(keys, sub_list)) for sub_list in x]

# 验证结果
for item in result:
    print(item)

需要注意:Python3.7及以上版本的标准字典是有序的,键的顺序和你定义d时完全一致。如果你的Python版本低于3.7,建议直接手动定义键的顺序列表(比如keys = ['x', 'y', 'z', 't', 'a', 's', 'm', 'n', 'u', 'v', 'b']),避免因字典无序导致的元素匹配错误。

Python2 实现方案

Python2的标准字典是无序的,所以不建议直接依赖d.keys()的顺序,最好手动指定键的顺序,或者使用OrderedDict来保证顺序。

方案1:手动指定键顺序

# Python2 代码
x = [['x1', 'x2', 'x3', 'x4', 'x5', 'x6', 'x7', 'x8', 'x9', 'x10', 'x11'], 
     ['x1', 'x2', 'x3', 'x4', 'x5', 'x6', 'x7', 'x8', 'x9', 'x10', 'x11'], 
     ['x1', 'x2', 'x3', 'x4', 'x5', 'x6', 'x7', 'x8', 'x9', 'x10', 'x11']]

# 手动定义键的顺序,确保和子列表元素一一对应
keys = ['x', 'y', 'z', 't', 'a', 's', 'm', 'n', 'u', 'v', 'b']

# 生成结果列表
result = [dict(zip(keys, sub_list)) for sub_list in x]

# 验证结果
for item in result:
    print(item)

方案2:使用OrderedDict保证顺序

如果希望保留字典定义时的顺序,可以用collections.OrderedDict:

from collections import OrderedDict

# Python2 代码
x = [['x1', 'x2', 'x3', 'x4', 'x5', 'x6', 'x7', 'x8', 'x9', 'x10', 'x11'], 
     ['x1', 'x2', 'x3', 'x4', 'x5', 'x6', 'x7', 'x8', 'x9', 'x10', 'x11'], 
     ['x1', 'x2', 'x3', 'x4', 'x5', 'x6', 'x7', 'x8', 'x9', 'x10', 'x11']]

# 用OrderedDict定义有序字典
d = OrderedDict([
    ("x", None), ("y", None), ("z", None), ("t", None), ("a", None),
    ("s", None), ("m", None), ("n", None), ("u", None), ("v", None), ("b", None)
])
keys = d.keys()

# 生成结果列表
result = [dict(zip(keys, sub_list)) for sub_list in x]

# 验证结果
for item in result:
    print(item)

内容的提问来源于stack exchange,提问作者Jordi Lazo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 18:57:45