字典创建说明

时间:2019-06-15 05:25:36

标签: python python-3.x dictionary

我刚接触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循环对值部分的工作方式。

1 个答案:

答案 0 :(得分:4)

您需要同时在两个列表上进行迭代,以便将值与键配对:

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'