从两个列表创建字典

use*_*811 0 python

我试图从两个列表创建一个字典,字典应该将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
Run Code Online (Sandbox Code Playgroud)

目前的输出: -

{'m1': 'b3', 'm3': 'b3', 'm2': 'b3'}
Run Code Online (Sandbox Code Playgroud)

预期产量: -

{'m1': 'b1', 'm2': 'b2','m3':'b3'}
Run Code Online (Sandbox Code Playgroud)

sac*_*cuL 5

每次在循环中执行双重迭代时,都会覆盖字典值.

zip改为使用:

destination_milestones_gerrit_branches = dict(zip(destination_milestones, gerrit_branches))

>>> destination_milestones_gerrit_branches
{'m1': 'b1', 'm2': 'b2', 'm3': 'b3'}
Run Code Online (Sandbox Code Playgroud)

如果你坚持通过循环执行它,使用enumerate获取每个的索引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'}
Run Code Online (Sandbox Code Playgroud)