wtfitis 发表于 2021-5-16 23:19:41

有个关于python字典的问题

dt=dict.fromkeys([(i,i+200) for i in range(-10000,57601,200)],[])
print(dt[(55200, 55400)].append(123))
print(dt.get((55200,554006)))
print(dt)
为啥我只对一个键append一个值。。然后这个字典里所有的键都添加了同样的值。。如下所示。。明明只对一个键添加了值。。求助大佬谢谢了。
(53400, 53600): , (53600, 53800): , (53800, 54000): , (54000, 54200): , (54200, 54400): , (54400, 54600):

suchocolate 发表于 2021-5-16 23:19:42

因为每个字典的值用的都是同一个列表,用id就知道了:dt = dict.fromkeys([(i, i + 200) for i in range(-10000, 57601, 200)], [])
print(id(dt[(55200, 55400)]))
print(id(dt[(-10000, -9800)]))
dt[(55200, 55400)].append(123)
print(dt[(55200, 55400)])
print(dt)

wtfitis 发表于 2021-5-17 09:01:00

suchocolate 发表于 2021-5-16 23:56
因为每个字典的值用的都是同一个列表,用id就知道了:

那如果我想那样子创建字典应该怎么做呀。。就是那种格式 但是列表都要不一样

wtfitis 发表于 2021-5-17 09:03:41

suchocolate 发表于 2021-5-16 23:19
因为每个字典的值用的都是同一个列表,用id就知道了:

我知道啦。。用字典推导式吧。。fromkeys貌似不行,这个方法
页: [1]
查看完整版本: 有个关于python字典的问题