无法使用带有两个 FOR 的字典推导式从两个列表创建字典。为什么?

Can't crate a dictionary from two lists using dictionary comprehension with two FORs. Why?

我知道有很多方法可以从两个列表中创建字典,但我想使用两个 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}

如果有人能为我澄清这一点,我将不胜感激。

您可以使用 zip 来达到这个目的。

dictionary = dict(zip(keys, values))

我的理解是,每个循环都以每个数字作为键重新创建完整的字典,结果只有你的最终输出是最后一个值的输出(最好通过反转你的键和值语句来显示,返回 {1: 'vello', 2: 'vello', 3: 'vello', 4: 'vello'}

如果另一个是你想要的输出,这应该可以正常工作:

dictionary = dict(zip(key,value))