字典创建说明



我对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'

最新更新