【python】報錯:TypeError: 'builtin_function_or_method' object is unsubscriptable的解決方法
阿新 • • 發佈:2019-01-26
出現這個報錯的原因其實很簡單,就是將小括號'()'寫成了中括號‘[]'
下面來看一個例子:
當一個字典裡面嵌套了字典和列表的時候,再通過字典多層呼叫,將get函式後的小括號寫成了中括號。如下面程式碼第二行:
1.def lookup(data,label,name): 2. return data[label].get[name] 3.data = {'first': { 'zhang': ['zhang san feng'],'li':['li si','li zhi']}, 4. 'middle': { 'san': ['zhang san feng']}, 5. 'last': { 'feng': ['zhang san feng'],'si':['li si'],'zhi':'li zhi'}} 6.print(lookup(data,'first','li'))
執行結果:
TypeError: 'builtin_function_or_method' object is not subscriptable
下面我們將程式碼改為正確的:
1.def lookup(data,label,name): 2. return data[label].get(name) 3.data = {'first': { 'zhang': ['zhang san feng'],'li':['li si','li zhi']}, 4. 'middle': { 'san': ['zhang san feng']}, 5. 'last': { 'feng': ['zhang san feng'],'si':['li si'],'zhi':'li zhi'}} 6.print(lookup(data,'first','li'))
再次執行:
['li si', 'li zhi']
成功的將名字首字母為 "li" 的查詢出來。