元组作为字典的关键词:'tuple'对象不支持项目分配

fia*_*lli 2 python dictionary tuples

我在python中有这个功能:

def initialize(s,cfg):
    pi={},
    for i,w in enumerate(s):
        j=i+1
        for X,rhs in cfg.items():
            if rhs.has_key(w):
                print (j,j,X),rhs[w]
                pi[(j,j,X)]=rhs[w]
    return pi
Run Code Online (Sandbox Code Playgroud)

当我跑去的时候

    pi[(j,j,X)]=rhs[w]
TypeError: 'tuple' object does not support item assignment
Run Code Online (Sandbox Code Playgroud)

它上面的印刷品返回 (1, 1, 'DT') 1.0

我必须遗漏一些东西,但据我所知,我并不想改变元组.为什么我会收到这个错误?

有一次我认为这可能是由于j和X被指向并试图创建一个新的元组,但这不起作用.我也在shell上试过这个:

>>> pi={}
>>> X="DT"
>>> j=1
>>> t=(j,j,X)
>>> pi[t]=1.0
>>> pi
{(1, 1, 'DT'): 1.0}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,一切正常.关于我为什么要tuple does not support item assignment error进入我的函数而不是shell的任何想法?

orl*_*rlp 5

你在这一行上有一个逗号:

pi={},
Run Code Online (Sandbox Code Playgroud)

这是简写​​:

pi = ({},)
Run Code Online (Sandbox Code Playgroud)

换句话说,pi是一个元组.