get方法返回的是一个列表吗?

EastonLiu 2017-12-11 05:37:57
今天在看python基础教程,对于书中这个函数不是很明白
def init(data):
data['first']={}
data['middle']={}
data['last']={}
def lookup(data,label,name):
return data[label].get(name)
def store(data,full_name):
names=full_name.split()
if len(names)==2:
names.insert(1,'')
labels='first','middle','last'
for label,name in zip(labels,names):
people=lookup(data,label,name)
if people:
people.append(full_name)
else:
data[label][name]=full_name
people=lookup(data,label,name) 返回的是一个值,怎么能用people.append(full_name)呢?append是列表的方法啊 。
...全文
196 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
oyljerry 2017-12-12
  • 打赏
  • 举报
回复
那就错误提示你了,people是str类型不是list,所以不能用append,你书上的代码有问题
EastonLiu 2017-12-11
  • 打赏
  • 举报
回复
引用 1 楼 oyljerry 的回复:
people=lookup(data,label,name) 返回的并不一定是值,它是返回的字典的值,它也可能是list,所以可以append,你可以看看people具体的类型
我试了下,字典返回的也不是list啊 以下是调用函数: >>> mynames={} >>> init(mynames) >>> store(mynames,'aaa bbb ccc') >>> mynames {'first': {'aaa': 'aaa bbb ccc'}, 'middle': {'bbb': 'aaa bbb ccc'}, 'last': {'ccc': 'aaa bbb ccc'}} >>> lookup(mynames,'first','aaa') 'aaa bbb ccc' 在这里lookup返回的是一个字符串,用append方法就会报错 >>> store(mynames,'aaa bbb ddd') Traceback (most recent call last): File "<pyshell#120>", line 1, in <module> store(mynames,'aaa bbb ddd') File "C:\Users\907968\AppData\Local\Programs\Python\Python36\examples\1.py", line 15, in store people.append(full_name) AttributeError: 'str' object has no attribute 'append'
EastonLiu 2017-12-11
  • 打赏
  • 举报
回复
以下是调用函数: >>> mynames={} >>> init(mynames) >>> store(mynames,'aaa bbb ccc') >>> mynames {'first': {'aaa': 'aaa bbb ccc'}, 'middle': {'bbb': 'aaa bbb ccc'}, 'last': {'ccc': 'aaa bbb ccc'}} >>> lookup(mynames,'first','aaa') 'aaa bbb ccc' 在这里lookup返回的是一个字符串,用append方法就会报错 >>> store(mynames,'aaa bbb ddd') Traceback (most recent call last): File "<pyshell#120>", line 1, in <module> store(mynames,'aaa bbb ddd') File "C:\Users\907968\AppData\Local\Programs\Python\Python36\examples\1.py", line 15, in store people.append(full_name) AttributeError: 'str' object has no attribute 'append'
oyljerry 2017-12-11
  • 打赏
  • 举报
回复
people=lookup(data,label,name) 返回的并不一定是值,它是返回的字典的值,它也可能是list,所以可以append,你可以看看people具体的类型

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧