我对Python相对较新,我需要一些帮助来理解如何获得以下代码的输出:
keys = ['id', 'name', 'age']
values = [10, 'Ross', 19]
a_dict = {key:value for key in keys for value in values}
print(a_dict)
输出为:
{'id': 19, 'name': 19, 'age': 19}
我也尝试过嵌套循环,我得到了相同的输出。我也尝试在循环中交换键和值,但没有效果。
有人可以解释一下吗?
编辑:
我知道如何将输出作为
{'id': 10, 'name': 'Ross', 'age': 19}
我只是要求解释我编写的代码是如何工作的......尤其是 for 循环如何用于值部分。
您需要同时迭代两个列表,以便将值与键配对:
keys = ['id', 'name', 'age']
values = [10, 'Ross', 19]
a_dict = {key:value for key, value in zip(keys, values)}
print(a_dict)
输出:
{'id': 10, 'name': 'Ross', 'age': 19}
发生了什么事情?
-
zip
元组(key, value)
中的键和值配对。 - 然后,该对被"解包"并分配:
key, value = (key, value)
- 最后,构建字典条目:
key: value
- 对输入中的每个对重复此操作。
您编写的代码:
相比之下,您编写的代码a_dict = {key:value for key in keys for value in values}
:
- 循环访问密钥。
- 然后,对于每个键,循环访问这些值。 对于每个键,
- 连续分配每个值,每次覆盖已分配的值,并以分配给所有键的最后一个值终止,即:
'id': 10, 'name': 10, 'age': 10'
'id': 'Ross', 'name': 'Ross', 'age': 'Ross'
'id': 19, 'name': 19, 'age': 19'