我试图从两个列表创建一个字典,字典应该将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)
每次在循环中执行双重迭代时,都会覆盖字典值.
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)