出现这个报错的原因其实很简单,就是将小括号'()'写成了中括号‘[]'

下面来看一个例子:

当一个字典里面嵌套了字典和列表的时候,再通过字典多层调用,将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" 的查询出来。

 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐