NanShan_bob 发表于 2024-5-21 13:39:35

小白的疑惑

for y in ] //生成一个列表,保留重复元素,
{x + y for x in for y in } //生成一个集合,没有重复元素 ,{2, 3, 4, 5, 6}
{(x:y) for x in for y in } //生成一个集合,其元素为元组,{(1, 2), (2, 1), (3, 1), (1, 1), (2, 3), (3, 3), (2, 2), (3, 2), (1, 3)}
++++++++++++++++++++++++++++++
{x:y for x in for y in } //生成一个字典,{1: 3, 2: 3, 3: 3}

问题是,前面三条语句都有进行3X3的遍历,为什么最后字典的这个语句不一样


FishC 发表于 2024-5-21 13:39:43

这是因为字典的键必须具有唯一性,而集合和列表可以包含重复元素。

在这个生成字典的语句中,我们使用了相同的键(1、2和3)并将它们映射到了相同的值(3)。由于字典的特性是键是唯一的,所以当我们使用相同的键时,后面的键值对会覆盖前面的,导致最终只保留了一个键值对{1: 3, 2: 3, 3: 3}。

如果你想要生成包含重复键的字典,可以考虑使用列表或元组来保存键值对,例如:

[ (x, y) for x in range(1,4) for y in range(1,4) ]
# 输出:[(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)]

这样就可以生成包含重复键的列表了。希望能帮到你!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

NanShan_bob 发表于 2024-5-21 13:41:53

明白了,谢谢FishC

FishC 发表于 2024-5-21 13:42:01

NanShan_bob 发表于 2024-05-21 13:41
明白了,谢谢FishC

不客气,我很高兴能帮到你!有任何问题,随时都可以来问。祝你在编程的学习中取得更好的进展!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

小肥狼haoran 发表于 2024-5-21 14:55:28

{:10_256:} FishC AI 小助理好强啊,我需要你的大脑帮我记东西,我有不会的问题就问你了
页: [1]
查看完整版本: 小白的疑惑