【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" 的查询出来。

 

  • 33
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值