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

如何将两个列表转换为一一对应的Python字典

问题:将两个列表按索引匹配转换为字典

问题背景

有两个列表list_id和productos,需要转换为字典,要求每个ID对应列表中相同索引位置的产品。但原代码生成的字典里所有ID都对应同一个产品,不符合需求。

原代码及问题

输入列表

list_id= ['2000391314791P', '2000391314715P', '2000383032443P', '2000387592776P', '2000391314760P', '2000387592813P', '2000383032511P', '2000391314784P', '2000387592738P', '2000387592806P', '2000387592769P', '2000387592790P', '2000387592752P', '2000391314746P', '2000391314777P', '2000391314753P', '2000391314814P', '2000387592783P', '2000383032429P', '2000383032467P', 'MPM00043444018', 'MPM00040888375']
productos= ['APPLE MACBOOK PRO 13,3" / CHIP M2 (CPU 8NUC Y GPU 10NUC) / 8GB RAM / 256GB SSD / COLOR PLATA', 'APPLE MACBOOK AIR 13,6" / CHIP M2 (CPU 8NUC Y GPU 8NUC) / 8GB RAM / 256GB SSD / COLOR PLATA', 'APPLE MACBOOK AIR 13,3" / CHIP M1 (CPU 8NUC Y GPU 7NUC) / 8GB RAM / 256GB SSD / COLOR PLATA', 'APPLE MACBOOK PRO 16" / CHIP M1 PRO (CPU 10NUC Y GPU 16NUC) / 16GB RAM / 1TB SSD / COLOR PLATA', 'APPLE MACBOOK AIR 13,6" / CHIP M2 (CPU 8NUC Y GPU 10NUC) / 8GB RAM / 512GB SSD / GRIS ESPACIAL', 'APPLE MACBOOK PRO 14" / CHIP M1 PRO (CPU 8NUC Y GPU 14NUC) / 16GB RAM / 512GB SSD / GRIS ESPACIAL', 'APPLE MACBOOK PRO 13,3" / CHIP M1 (CPU 8NUC Y GPU 8NUC) / 8GB RAM / 512GB SSD / COLOR PLATA', 'APPLE MACBOOK PRO 13,3" / CHIP M2 (CPU 8NUC Y GPU 10NUC) / 8GB RAM / 256GB SSD / GRIS ESPACIAL', 'APPLE MACBOOK PRO 16" / CHIP M1 PRO (CPU 10NUC Y GPU 16NUC) / 16GB RAM / 512GB SSD / GRIS ESPACIAL', 'APPLE MACBOOK PRO 14" / CHIP M1 PRO (CPU 10NUC Y GPU 16NUC) / 16GB RAM / 1TB SSD / COLOR PLATA', 'APPLE MACBOOK PRO 16" / CHIP M1 PRO (CPU 10NUC Y GPU 16NUC) / 16GB RAM / 1TB SSD / GRIS ESPACIAL', 'APPLE MACBOOK PRO 14" / CHIP M1 PRO (CPU 10NUC Y GPU 16NUC) / 16GB RAM / 1TB SSD / GRIS ESPACIAL', 'APPLE MACBOOK PRO 16" / CHIP M1 MAX (CPU 10NUC Y GPU 32NUC) / 32GB RAM / 1TB SSD / COLOR PLATA', 'APPLE MACBOOK AIR 13,6" / CHIP M2 (CPU 8NUC Y GPU 10NUC) / 8GB RAM / 512GB SSD / AZUL MEDIANOCHE', 'APPLE MACBOOK AIR 13,6" / CHIP M2 (CPU 8NUC Y GPU 10NUC) / 8GB RAM / 512GB SSD / BLANCO ESTELAR', 'APPLE MACBOOK AIR 13,6" / CHIP M2 (CPU 8NUC Y GPU 10NUC) / 8GB RAM / 512GB SSD / COLOR PLATA', 'APPLE MACBOOK PRO 13,3" / CHIP M2 (CPU 8NUC Y GPU 10NUC) / 8GB RAM / 512GB SSD / COLOR PLATA', 'APPLE MACBOOK PRO 16" / CHIP M1 PRO (CPU 10NUC Y GPU 16NUC) / 16GB RAM / 512GB SSD / COLOR PLATA', 'APPLE MACBOOK AIR 13,3" / CHIP M1 (CPU 8NUC Y GPU 7NUC) / 8GB RAM / 256GB SSD / COLOR ORO', 'APPLE MACBOOK AIR 13,3" / CHIP M1 (CPU 8NUC Y GPU 8NUC) / 8GB RAM / 512GB SSD / GRIS ESPACIAL', 'APPLE MACBOOK PRO 14.2 1TB M1 PRO 10C GPU 16C SILVER', 'APPLE MACBOOK PRO 14.2 1TB M1 PRO 10C GPU 16C SPACE GREY']

原错误代码

datos = { id_: { 'name': i for i in productos}   for id_ in lista_id}

问题原因

原代码中,每个ID对应的{'name': i for i in productos}是一个字典推导式,它会遍历整个productos列表,最终name的值会被覆盖为列表的最后一个元素,导致所有ID都对应同一个产品。

正确解法

要实现索引匹配,需要将两个列表按位置配对,Python的zip()函数可以把两个列表中对应索引的元素打包成元组,再转换为字典。

代码实现

datos = {id_: {'nombre': producto} for id_, producto in zip(list_id, productos)}

结果示例

生成的字典会是每个ID对应相同索引的产品,比如:

{
    '2000391314791P': {'nombre': 'APPLE MACBOOK PRO 13,3" / CHIP M2 (CPU 8NUC Y GPU 10NUC) / 8GB RAM / 256GB SSD / COLOR PLATA'},
    '2000391314715P': {'nombre': 'APPLE MACBOOK AIR 13,6" / CHIP M2 (CPU 8NUC Y GPU 8NUC) / 8GB RAM / 256GB SSD / COLOR PLATA'},
    ...
    'MPM00040888375': {'nombre': 'APPLE MACBOOK PRO 14.2 1TB M1 PRO 10C GPU 16C SPACE GREY'}
}

注意事项

  • 确保list_id和productos的长度一致,否则zip()会以较短的列表长度为准,超出的元素会被忽略。如果需要处理长度不一致的情况,可以使用itertools.zip_longest()来填充缺失值。

内容的提问来源于stack exchange,提问作者MATIAS IGNACIO OLIVA ALCAYAGA

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 18:40:24