【问题标题】:Error in Python Dictionary when updating without reference [duplicate]在没有参考的情况下更新时 Python 字典中的错误 [重复]
【发布时间】: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


【解决方案1】:

使用deepcopy

d_new = copy.deepcopy(d)

【讨论】:

    猜你喜欢
    • 2021-12-05
    • 2020-02-12
    • 2018-12-28
    • 2021-02-14
    • 2011-12-26
    • 2019-12-09
    • 2019-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多