2013-09-22 80 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