鱼C论坛

 找回密码
 立即注册
查看: 2328|回复: 6

新手初学创建函数遇到的问题,求解答

[复制链接]
发表于 2016-11-7 16:46:38 | 显示全部楼层 |阅读模式
5鱼币
函数定义如下:
def init(data):
    data['first']={}
    data['middle']={}
    data['last']={}
    return
def lookup(data,label,name):
    return data[label].get[name]


然后在IDLE里面输入:
>>> me='Magnus Lie Hetland'
>>> storage={}
>>> init(storage)
>>> storage['first']['Magnus']=[me]
>>> storage['middle']['Lie']=[me]
>>> storage['last']['Hetland']=[me]
>>> lookup(storage,'middle','Lie')
Traceback (most recent call last):
  File "<pyshell#274>", line 1, in <module>
    lookup(storage,'middle','Lie')
  File "D:\userdata\tpeng\Desktop\exerise.py", line 29, in lookup
    return data[label].get[name]
TypeError: 'builtin_function_or_method' object is not subscriptable
>>>
>>>
--------------------------------------------------------------
个人感觉错误问题出在name的定义那里,却找不到方法去定义name。
以便让执行语句lookup(storage,'middle','Lie')的最终结果为: ['Magnus Lie Hetland']
求各位的指教~

最佳答案

查看完整内容

return data[label].get(name)
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-11-7 16:46:39 | 显示全部楼层
return data[label].get(name)
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-11-7 17:53:29 | 显示全部楼层
get是搜索字典的key而不是value

评分

参与人数 1鱼币 +5 收起 理由
pt2100 + 5 同样谢谢你的解答,看来我还需要多学习去分.

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-11-8 09:02:32 | 显示全部楼层
get的用法你可以help到的。他的参数是key
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-11-9 14:36:08 | 显示全部楼层
蛋炒饭妖妖 发表于 2016-11-8 09:02
get的用法你可以help到的。他的参数是key

谢谢你的解答,我确实是不理解key和value的定义,还需要多看基本的定义。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-11-9 15:30:19 | 显示全部楼层
本帖最后由 jackie-L 于 2016-11-9 15:59 编辑

我也零基础学python半个月,互相学习。你的问题不是出在get的是key还是返回value,你的问题在于你对栈的概念太模糊了,你创建了一个字典storage,你把该字典放进了init()函数里面,为storage字典添加了几个key,其实storage这个字典就在内存的栈中了,不需要你return,所以说init函数是一个过程函数不需要你返回,而你添加了一个return把init()函数本身返回给了storage,这时storage就不是一个字典了而是一个函数,如果你直接storage['middle'].get('lei')是没有问题的,但你又把storage(他现在是一个函数了)作为参数又传进了lookup函数,你仔细看你的错误信息‘TypeError: 'builtin_function_or_method' object is not subscriptable’类型错误,函数方法是不能被下标的。而你在lookup()函数中对另外一个函数.get()能不错吗

正确的代码如下
  1. def init(data):
  2.     data['first']={}
  3.     data['middle']={}
  4.     data['last']={}
  5.    
  6. def lookup(data,label,name):
  7.     return data[label].get(name)
复制代码

评分

参与人数 1鱼币 +5 收起 理由
pt2100 + 5 谢谢你的详细解答,让我知道了自己的不足。

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-11-16 23:58:22 | 显示全部楼层
help
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-23 18:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表