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是列表的方法啊 。
...全文
155 4 点赞 打赏 收藏 举报
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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具体的类型
  • 打赏
  • 举报
回复
相关推荐
发帖
脚本语言
加入

3.7w+

社区成员

JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
申请成为版主
帖子事件
创建了帖子
2017-12-11 05:37
社区公告

CSDN 脚本语言社区接受专栏投稿(专栏会在顶部创建专属你的栏目),投稿需满足以下要求:

  • 脚本语言技术相关;
  • 文章持续更新,保持活跃;
  • 内容清晰明了,干货为主;
  • 文章排版有序,有条有理。

本社区开通招聘专栏,发布招聘信息请联系版主,发布者需要保证招聘信息真实有效,CSDN 平台和版主不对招聘内容负责!

联系方式:私聊版主、发送邮件、QQ联系等均可: