鱼C论坛

 找回密码
 立即注册
查看: 1442|回复: 3

[已解决]有个关于python字典的问题

[复制链接]
发表于 2021-5-16 23:19:41 | 显示全部楼层 |阅读模式
20鱼币
  1. dt=dict.fromkeys([(i,i+200) for i in range(-10000,57601,200)],[])
  2. print(dt[(55200, 55400)].append(123))
  3. print(dt.get((55200,554006)))
  4. print(dt)
复制代码

为啥我只对一个键append一个值。。然后这个字典里所有的键都添加了同样的值。。如下所示。。明明只对一个键添加了值。。求助大佬谢谢了。
(53400, 53600): [123], (53600, 53800): [123], (53800, 54000): [123], (54000, 54200): [123], (54200, 54400): [123], (54400, 54600): [123]
最佳答案
2021-5-16 23:19:42
因为每个字典的值用的都是同一个列表,用id就知道了:
  1. dt = dict.fromkeys([(i, i + 200) for i in range(-10000, 57601, 200)], [])
  2. print(id(dt[(55200, 55400)]))
  3. print(id(dt[(-10000, -9800)]))
  4. dt[(55200, 55400)].append(123)
  5. print(dt[(55200, 55400)])
  6. print(dt)
复制代码

最佳答案

查看完整内容

因为每个字典的值用的都是同一个列表,用id就知道了:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-5-16 23:19:42 | 显示全部楼层    本楼为最佳答案   
因为每个字典的值用的都是同一个列表,用id就知道了:
  1. dt = dict.fromkeys([(i, i + 200) for i in range(-10000, 57601, 200)], [])
  2. print(id(dt[(55200, 55400)]))
  3. print(id(dt[(-10000, -9800)]))
  4. dt[(55200, 55400)].append(123)
  5. print(dt[(55200, 55400)])
  6. print(dt)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-5-17 09:01:00 | 显示全部楼层
suchocolate 发表于 2021-5-16 23:56
因为每个字典的值用的都是同一个列表,用id就知道了:

那如果我想那样子创建字典应该怎么做呀。。就是那种格式 但是列表都要不一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-5-17 09:03:41 | 显示全部楼层
suchocolate 发表于 2021-5-16 23:19
因为每个字典的值用的都是同一个列表,用id就知道了:

我知道啦。。用字典推导式吧。。fromkeys貌似不行,这个方法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-28 19:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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