這是我的詞典:如何從字典中分配全局變量?
vimvar = {'startline' : [ 'startline' , 'int(vim.eval("s:StartLine"))' ],
'startline-1' : [ 'startline' , 'int(vim.eval("s:StartLine"))-1'],
'endline' : [ 'endline' , 'int(vim.eval("s:EndLine"))' ],
'gcase' : [ 'gCASE' , 'vim.eval("g:CASE")' ],
'akeyw' : [ 'akeyw' , 'vim.eval("a:keyw")' ]
}
這是我的清單:
importlist = ['startline', 'gcase', 'akeyw']
我想要做的是檢查是否在importlist
值是存在於vimvar
字典鍵。
如果是比:
在子列表(與該鍵關聯)的第一個字段的值必須是一個新的全局變量。
必須執行子列表中第二個字段的值(與鍵關聯)。它從我的texteditor vim中導入一個變量。
我創造了這個代碼來實現上述:
for n in importlist:
for key,val in vimvar.items():
if n in vimvar:
exec('global ' + vimvar[key][0])
exec(vimvar[val][0] + '=vimvar[val][1]')
但無論我做什麼它提供了錯誤
undefined variable 'sa'
undefined variable 'gCASE', unhashable type list
等
我是怎麼了?
您是否有錯誤消息中指定的錯誤行? – nbro
你做錯了什麼是用'exec'分配全局值。你有這樣一個很好的理由嗎? – TigerhawkT3
一個大問題:問題在於你的循環中有太多循環。 您檢查是否'N'在字典中,然後使用_current_字典迭代,從而導致變形點焊 在importlist N: 如果n在vimvar: EXEC( '全球' + vimvar [N] [0]) exec('='。join(vimvar [n])) –