作为字典键的元组说:'tuple' 对象不支持项目分配
tuple as key to a dictionary says: 'tuple' object does not support item assignment
我在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
上面的印刷品returns(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}
如您所见,一切正常。关于为什么我在我的函数中得到 tuple does not support item assignment error
而不是 shell?
的任何想法
你在这行有尾随逗号:
pi={},
shorthand 用于:
pi = ({},)
换句话说,pi是一个元组。
我在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
上面的印刷品returns(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}
如您所见,一切正常。关于为什么我在我的函数中得到 tuple does not support item assignment error
而不是 shell?
你在这行有尾随逗号:
pi={},
shorthand 用于:
pi = ({},)
换句话说,pi是一个元组。