【发布时间】:2017-03-16 09:53:17
【问题描述】:
我有以下字典(嵌套):
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 也在更新。为了防止这种情况,我使用了 update()。但这似乎不起作用。我怎样才能得到想要的结果?
【问题讨论】:
-
查看
copy.deepcopy。 -
非常感谢!我不知道现有的问题。我试过了,但在谷歌上找不到任何东西。
标签: python python-2.7