1
我在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
,並在運行時,我得到
pi[(j,j,X)]=rhs[w]
TypeError: 'tuple' object does not support item assignment
它上面的打印返回(1, 1, 'DT') 1.0
我必須失去了一些東西,但據我可以看到我不是變異的元組。爲什麼我得到這個錯誤?
在一個點上我認爲這可能是由於J和X被指出並試圖創造一個新的記錄,但沒有奏效。我也試過這個外殼:
>>> pi={}
>>> X="DT"
>>> j=1
>>> t=(j,j,X)
>>> pi[t]=1.0
>>> pi
{(1, 1, 'DT'): 1.0}
正如你所看到的,它的一切工作。任何想法,爲什麼我的功能tuple does not support item assignment error
,但不在殼上?
確實。如果你認爲一個變量是一個字典,並且Python告訴你它是一個元組,那麼首先要做的是*假設Python是正確的*並且找出變量爲什麼是元組而不是字典。 – kindall 2015-03-13 18:07:47
值得注意的是'dict.has_key'已經在Python 3.x中被刪除了,現在最好的做法是使用'if w in rhs'多年。 – 2015-03-13 18:09:57