我想將0,1和2中的值列表轉換爲2,2; 1,2和1,1。我寫這是應該做的一個函數:UnboundLocalError:調用函數輸出時
def dec2(code):
if code == 0:
ret_val = '2','2'
elif code == 1:
ret_val = '1','2'
elif code == 2:
ret_val = '1','1'
else:
ret_val = '0','0'
return ret_val
似乎只要我在現成的名單運行它要做工精細:
In [87]: a=[1,2,1,2]
In [88]: b=[dec2(x) for x in a]
In [89]: b
Out[89]: [('1', '2'), ('1', '1'), ('1', '2'), ('1', '1')]
然而,當我嘗試使用它取代字典值,我得到UnboundLocalError .:
In [82]: gtps
Out[82]: {11: [1, 2, 1, 2], 22: [2, 2, 1, 1], 33: [1, 9, 0, 2]}
[86]: for k,v in gtps.iteritems():
....: tmp=[dec2(x) for x in v]
....: all[k]=tmp
....:
....:
---------------------------------------------------------------------------
UnboundLocalError Traceback (most recent call last)
UnboundLocalError: local variable 'ret_val' referenced before assignment
ANy的想法?
你向我們展示了不會引發'UnboundLocalError'的代碼;確保你正在使用* right *'dec2()函數版本。爲什麼不從'dec2()'早期返回,或者更好,使用映射? –
我剛寫了這個函數,所以沒有可以說的版本......恐怕我對映射不是很陌生! – branwen85