鱼C论坛

 找回密码
 立即注册
查看: 588|回复: 4

这个怎么理解{x:y for x in [1,2,3] for y in [4,5,6]}

[复制链接]
发表于 2023-4-1 23:57:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
{x:y for x in [1,2,3] for y in [4,5,6]}
为啥答案是这个?
{1: 6, 2: 6, 3: 6}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-2 00:09:04 | 显示全部楼层
这个表达式是一个字典推导式,用于快速生成一个字典。它的结构是:{key_expression: value_expression for item in iterable}。

在这个例子中,x:y 是键值对,x 和 y 分别在列表 [1, 2, 3] 和 [4, 5, 6] 中取值。

字典的键是唯一的,因此当有重复的键出现时,会被新的值覆盖。

在这个例子中,x 会分别取值 1, 2, 3,而 y 会在每次 x 取值时都遍历整个列表 [4, 5, 6]。这将产生以下键值对:

  1. 1:4
  2. 1:5
  3. 1:6
  4. 2:4
  5. 2:5
  6. 2:6
  7. 3:4
  8. 3:5
  9. 3:6
复制代码


注意每个键(1,2,3)的最后一个值都是6。因为字典中的键是唯一的,所以之前的键值对会被后面的覆盖。因此,最后生成的字典为:

  1. {1: 6, 2: 6, 3: 6}
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2023-4-2 18:01:39 | 显示全部楼层
这是一个字典推导式,它的逻辑是在两个列表之间进行嵌套循环,对于列表1中的每个元素x,都与列表2中的所有元素y配对形成一个键值对{x:y}。因此,推导式生成了9个键值对:

键为1,值为4
键为1,值为5
键为1,值为6
键为2,值为4
键为2,值为5
键为2,值为6
键为3,值为4
键为3,值为5
键为3,值为6
由于每个键只能对应一个值,因此相同键的键值对将会被后面的覆盖掉。在这种情况下,最后三个键值对会覆盖前面的,因此最终结果为{1: 6, 2: 6, 3: 6}。

点评

明白了,被覆盖了  发表于 2023-4-3 17:24
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-3 17:27:35 | 显示全部楼层
给个最佳答案呗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-19 10:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表