全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 python论坛
1196 1
2016-03-12
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',不是全名啊。我的理解错在哪里,还望指出,非常感谢!

二维码

扫码加我 拉你入群

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

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

全部回复
2016-3-17 17:05:10
莎发,哈哈
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群