首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >辞典创作阐释

辞典创作阐释
EN

Stack Overflow用户
提问于 2019-06-15 05:25:36
回答 1查看 59关注 0票数 3

我对Python还比较陌生,我需要一些帮助来理解如何为下面的代码获得输出:

代码语言:javascript
复制
keys = ['id', 'name', 'age']
values = [10, 'Ross', 19]
a_dict = {key:value for key in keys for value in values}
print(a_dict)

产出如下:

代码语言:javascript
复制
{'id': 19, 'name': 19, 'age': 19}

我也尝试过嵌套循环,得到了相同的输出。我也尝试在循环中交换键和值,但是没有效果。

有人能解释一下吗?

编辑:

我知道如何获得输出

代码语言:javascript
复制
{'id': 10, 'name': 'Ross', 'age': 19}

我只是要求解释一下我写的代码是如何工作的。特别是for循环对值部分的工作方式。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-15 05:28:47

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

代码语言:javascript
复制
keys = ['id', 'name', 'age']
values = [10, 'Ross', 19]
a_dict = {key:value for key, value in zip(keys, values)}
print(a_dict)

输出:

代码语言:javascript
复制
{'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'
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56607615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档