2013-09-22 68 views
0

以下是我的代码的简短形式,因为完整代码太长。字典覆盖/删除对象

想象一下有人访问你的网站,它会得到你的id * steamid样本)。但是我的代码只能放在字典中的最后一个steamid

def player_activate(ev) 
    userid = ev["userid"] 
    steamid = es.getplayersteamid(userid) 
    data = {} 
    data["Season 1"] = {} 
    data["Season 1"][steamid] = {'points':20, 'kill':1} 

print(data["Season 1"][steamid]) 

只有一个steamid显示在字典中,而不是所有的人,所以我得到:

{'STEAM_5838512', 'points:20','kill:1'} 

但我希望它是是:

{'Season 1', 'STEAM_5838512', 'points:20','kill:1', 
'Season 1', 'STEAM_83257231', 'points:20','kill:1'} 
+0

最后两行应该是字典吗?他们正在设置 – TankorSmash

回答

3
data["Season 1"] = {} 
data["Season 1"][steamid] = {'points':20, 'kill':1} 

您将data中的Season 1的值设置为空白字典,然后,您将为该字典指定一个新字典ID。

将其更改为类似下面的,它采用dict.setdefault

data.setdefault("Season 1", {}) 
data["Season 1"][steamid] = {'points':20, 'kill':1} 

它检查是否有一个名为Season 1data的关键,如果没有,它设置的data['Season 1]{}值,这意味着它不会覆盖Season 1下的任何现有数据。

+0

你知道我可以在哪里阅读更多关于此? – Frederik

+0

除了上面链接的官方文档,也许这个答案将有助于http://stackoverflow.com/a/15555745/541208 – TankorSmash