鱼C论坛

 找回密码
 立即注册
查看: 1969|回复: 2

[已解决]python 字典

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

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

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

x
>>> d={x:y for x in [1,3,5] for y in [2,4,6]}
>>> d
{1: 6, 3: 6, 5: 6}
请教大神,为啥这里的y都是6哇,视频里面也没讲
最佳答案
2023-4-18 21:46:17
在这个代码中,使用了字典推导式,并且使用了两个for循环来创建字典。第一个for循环遍历列表[1,3,5]中的元素,而第二个for循环则遍历列表[2,4,6]中的元素。

在这种情况下,对于字典中的每个键(x)和值(y)的组合,都会将y赋值为列表[2,4,6]的最后一个元素6。因此,在字典d={x:y for x in [1,3,5] for y in [2,4,6]}中,每个键都与值6相对应。因此,打印字典时得到{1:6, 3:6, 5:6}。

如果想要其他结果,需要重新构建字典推导式,例如:

- 将两个列表相互交叉,则d={x:y for x,y in zip([1,3,5],[2,4,6])},运行结果为{1:2, 3:4, 5:6}。
- 将两个列表堆叠起来形成元组,则d={(x,y) for x in [1,3,5] for y in [2,4,6]},运行结果为{(1,2),(1,4),(1,6),(3,2),(3,4),(3,6),(5,2),(5,4),(5,6)}。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-18 21:46:11 | 显示全部楼层
您好!这个问题的原因在于字典推导式的执行顺序。字典推导式是这样工作的:它会遍历x的列表,然后对于每个x,它会遍历y的列表。当遍历y的列表时,它会使用最后一个遇到的y值。这就是为什么字典中的所有值都是6的原因。

让我详细解释一下字典推导式是如何工作的:

1、对于x中的每个值(1,3,5),执行以下步骤:
a. 对于y中的每个值(2,4,6),执行以下步骤:
i. 创建一个字典条目,其中键是x,值是y。

所以这里的执行过程如下:
1、x = 1
a. y = 2,创建条目{1: 2}
b. y = 4,更新条目为{1: 4}
c. y = 6,更新条目为{1: 6}

2、x = 3
a. y = 2,创建条目{3: 2}
b. y = 4,更新条目为{3: 4}
c. y = 6,更新条目为{3: 6}

3、x = 5
a. y = 2,创建条目{5: 2}
b. y = 4,更新条目为{5: 4}
c. y = 6,更新条目为{5: 6}
最终,字典变为{1: 6, 3: 6, 5: 6}。

如果您想要创建一个包含x和y所有可能组合的字典,可以尝试以下方法:
>>> d = {(x, y): x*y for x in [1, 3, 5] for y in [2, 4, 6]}
>>> d
{(1, 2): 2, (1, 4): 4, (1, 6): 6, (3, 2): 6, (3, 4): 12, (3, 6): 18, (5, 2): 10, (5, 4): 20, (5, 6): 30}

这将为每个x和y的组合创建一个字典条目,其中键是一个元组(x,y),值是x*y。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-18 21:46:17 | 显示全部楼层    本楼为最佳答案   
在这个代码中,使用了字典推导式,并且使用了两个for循环来创建字典。第一个for循环遍历列表[1,3,5]中的元素,而第二个for循环则遍历列表[2,4,6]中的元素。

在这种情况下,对于字典中的每个键(x)和值(y)的组合,都会将y赋值为列表[2,4,6]的最后一个元素6。因此,在字典d={x:y for x in [1,3,5] for y in [2,4,6]}中,每个键都与值6相对应。因此,打印字典时得到{1:6, 3:6, 5:6}。

如果想要其他结果,需要重新构建字典推导式,例如:

- 将两个列表相互交叉,则d={x:y for x,y in zip([1,3,5],[2,4,6])},运行结果为{1:2, 3:4, 5:6}。
- 将两个列表堆叠起来形成元组,则d={(x,y) for x in [1,3,5] for y in [2,4,6]},运行结果为{(1,2),(1,4),(1,6),(3,2),(3,4),(3,6),(5,2),(5,4),(5,6)}。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-28 20:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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