Python Can';t使用字典理解和两个FOR从两个列表中装箱一本字典。为什么?
我知道有很多方法可以用两个列表制作字典,但是我想用两个FOR循环来迭代两个列表。因此,我使用了以下代码。令人惊讶的是,代码没有遍历包含字典键值的第二个列表,只将列表的最后一个元素视为值Python Can';t使用字典理解和两个FOR从两个列表中装箱一本字典。为什么?,python,dictionary,list-comprehension,dictionary-comprehension,Python,Dictionary,List Comprehension,Dictionary Comprehension,我知道有很多方法可以用两个列表制作字典,但是我想用两个FOR循环来迭代两个列表。因此,我使用了以下代码。令人惊讶的是,代码没有遍历包含字典键值的第二个列表,只将列表的最后一个元素视为值 key = ['hello', 'mello', 'vello'] value = [1, 2, 3] dictionary = {k: v for k in key for v in value} print('dictionary is ', dictionary) 结果是: dictionary is:
key = ['hello', 'mello', 'vello']
value = [1, 2, 3]
dictionary = {k: v for k in key for v in value}
print('dictionary is ', dictionary)
结果是:
dictionary is: {'hello': 3, 'mello': 3, 'vello': 3}
但我预计结果将是:
dictionary is: {'hello': 1, 'mello': 2, 'vello': 3}
如果有人能为我澄清这一点,我将不胜感激。您可以将其用于此目的
dictionary = dict(zip(keys, values))
我的理解是,每个循环都会以每个数字作为键重新创建完整的字典,结果只有最后一个值的最终输出(最好通过反转键和值语句,返回
{1:'vello',2:'vello',3:'vello',4:'vello'}
如果另一个是您的预期输出,那么这应该可以正常工作:
dictionary = dict(zip(key,value))
令人惊讶的是,代码没有迭代包含字典键值的第二个列表当然可以。试着只做一个常规的嵌套循环并打印出值。它应该是有启发性的。它确实会在第二个列表上迭代。覆盖。你想要什么?请澄清你的问题。我问这个问题是因为我在其他地方写了以下代码,它似乎工作正常。flowCost={a:round(p,0)对于p in normPositiveList(normMean,normSig,len(list(Graph.edges)))的in-list(Graph.edges)函数,normPositiveList是一个返回列表的函数。我不理解它背后的逻辑,尽管我知道使用zip()可以解决问题。