首页 > 解决方案 > 从两个列表创建字典

问题描述

我正在尝试从两个列表创建一个字典,字典应该将 listA 的每个元素与 listB 中相同索引处的相应元素进行一对一映射,我在下面有当前输出和预期输出,任何人都可以建议如何解决这个问题?

destination_milestones_gerrit_branches ={}
destination_milestones =['m1','m2','m3']
gerrit_branches = ['b1','b2','b3']
for milestone in destination_milestones:
    print milestone
    for branch in gerrit_branches:
        print branch
        destination_milestones_gerrit_branches[milestone]= branch
print destination_milestones_gerrit_branches

电流输出:-

{'m1': 'b3', 'm3': 'b3', 'm2': 'b3'}

预期输出:-

{'m1': 'b1', 'm2': 'b2','m3':'b3'}

标签: python

解决方案


您每次都通过在循环中进行两次迭代来覆盖您的字典值。

改用zip

destination_milestones_gerrit_branches = dict(zip(destination_milestones, gerrit_branches))

>>> destination_milestones_gerrit_branches
{'m1': 'b1', 'm2': 'b2', 'm3': 'b3'}

如果您坚持通过循环执行此操作,请使用enumerate获取 each 的索引destination_milestones

destination_milestones_gerrit_branches ={}

for i, milestone in enumerate(destination_milestones):
    destination_milestones_gerrit_branches[milestone]= gerrit_branches[i]

>>> destination_milestones_gerrit_branches
{'m1': 'b1', 'm2': 'b2', 'm3': 'b3'}

推荐阅读