Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Can';t使用字典理解和两个FOR从两个列表中装箱一本字典。为什么?_Python_Dictionary_List Comprehension_Dictionary Comprehension - Fatal编程技术网

Python Can';t使用字典理解和两个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:

我知道有很多方法可以用两个列表制作字典,但是我想用两个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: {'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()可以解决问题。