楼主: zbg100
944 1

[问答] 【python基础教程】第6章 抽象 代码求解读 [推广有奖]

  • 3关注
  • 0粉丝

硕士生

19%

还不是VIP/贵宾

-

威望
0
论坛币
1204 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
9290 点
帖子
42
精华
0
在线时间
219 小时
注册时间
2011-3-2
最后登录
2023-11-10

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
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()    #1.用split()方法把名字,中间名,姓分开!
    if len(names)==2 :
        names.insert(1,'')
    p={}
    labels=['first','middle','last']   #2.在这个函数里面labels要重新定义。
    for (label,name) in zip(labels,names) :
        people = lookup(data,label,name)
        if people:
            people.append(full_name)
        else :
            data[label][name]=[full_name]
以下是实现:
>>> MyNames={}
>>> init(MyNames)
>>> store(MyNames,'Magnus Lie Hetland')
>>> lookup(MyNames,'middle','Lie')
=======================================================
不懂得地方:
        if people:
            people.append(full_name)
        else :
            data[label][name]=[full_name]
1.people不是已经被赋值了么(people = lookup(data,label,name)),而且每循环一次,之前的值还会被覆盖,怎么又是一个列表?
2.data是一个字典,data[label][name]是全名里面的某一个名字(如中间名)叫XXX(如'Lie')的东西,这个东西不应该等于full_name啊!简单的来说,就这个更新字典的方法没看懂。就拿实现的例子来说,data['middle']['Lie']应该等于'Lie',不是全名啊。我的理解错在哪里,还望指出,非常感谢!

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:python基础教程 Python基础 python 基础教程 People python

沙发
huangap 发表于 2016-3-17 17:05:10 |只看作者 |坛友微信交流群
莎发,哈哈

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-27 06:58