2017-03-16 97 views
0

更新時,我有一個以下詞典(嵌套):錯誤在Python字典不參考

d = {'q0': {'VB': 2, 'NN': 8}, 'VB': {'DT': 5, 'NN': 3, 'IN': 2}} 

我的目標是更新存在於上述字典概率的值。那麼計算爲P(VB|q0) = count of verb/total count of q0 因此P(VB | q0)= 2/10來自給定詞典。每一個關鍵的類似的計算後,我的新詞典應該像

d_new = {'q0': {'VB': 0.2, 'NN': 0.8}, 'VB': {'DT': 0.5, 'NN': 0.3, 'IN': 0.2}} 

現在我寫的實現上面是如下代碼:

d = {'q0': {'VB': 2, 'NN': 8}, 'VB': {'DT': 5, 'NN': 3, 'IN': 2}} 
d_new = {} 
d_new.update(d) 
for key in d.keys(): 
    for i in d[key].keys(): 
     d_new[key][i] = d[key][i]/ float(sum(d[key].values())) 

這給我結果爲:

{'q0': {'VB': 0.2, 'NN': 0.9756097560975611}, 'VB': {'DT': 0.5, 'NN': 0.5454545454545454, 'IN': 0.6567164179104478}} 

我假設原來的d也正在更新。爲了防止這種情況,我使用了更新()。但它似乎並不奏效。我怎樣才能得到想要的結果?

+1

查找到'copy.deepcopy'。 –

+0

非常感謝!我不知道現有的問題。我試過但在google上找不到任何東西。 –

回答

1

使用deepcopy

d_new = copy.deepcopy(d)