1. 程式人生 > >【python】報錯:TypeError: 'builtin_function_or_method' object is unsubscriptable的解決方法

【python】報錯:TypeError: 'builtin_function_or_method' object is unsubscriptable的解決方法

出現這個報錯的原因其實很簡單,就是將小括號'()'寫成了中括號‘[]'

下面來看一個例子:

當一個字典裡面嵌套了字典和列表的時候,再通過字典多層呼叫,將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" 的查詢出來。