【发布时间】:2015-04-15 18:23:20
【问题描述】:
if savescores == "y":
name = raw_input("Enter your name.")
datfile = filename[0:-4] + ".dat"
highscores = shelve.open(datfile)
try:
highscores[name].append(score)
except:
highscores[name] = [score]
如果这个特定玩家已经有分数,我想将新分数附加到他已有的分数上,但显然这不起作用,因为它根本不会改变他的分数。
【问题讨论】:
-
你能更详细地解释什么不起作用吗?乍一看,您所拥有的看起来不错(尽管我会使用
except KeyError而不是裸露的except)。 -
这是“try: highscores[name].append(score)”。当我要求它打印特定球员的分数时,什么都没有改变,它只是我之前得到的分数,它应该有旧分数和新分数的列表。
-
@Shashank:你的意思是
setdefault,而不是get。get不会改变字典,setdefault会。查看d = {};d.get('x', []).append(1);print(d)的结果。 -
@StevenRumbalski 是的,我的错。
highscores.setdefault('name', []).append(score)
标签: python append shelve pickle