#初始化
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.append(full_name)
else:
data[label][name]=[full_name]
'''
store函数执行以下步骤。
(1)使用参数data和full_name进入函数,这两个参数呗设置为函数在外部获得的一些值
(2)通过拆分full_name,得到一个叫做names的列表
(3)如果names的长度为2,(只有首名和末名),那么插入一个空字符串作为中间名
(4)强字符串'first'、'middle'和'last'作为元祖存储在labels中
(5)使用zip函数联合标签和名字,对于每一个(label,name)对,进行以下处理:
获得属于给定标签和名字的列表
将full_name添加到列表中,或者插入一个需要的新列表
>>>MyNames={}
>>>init(MyNames)
>>>store(MyNames,'Magnus Lie Hetland')
>>>lookup(MyNames,'Middle','Lie')
['Magnus Lie Hetland']
可以工作,再试试
>>>store(MyNames,'Robin Hood')
>>>store(MyNames,'Robin Locksley')
>>>lookup(MyNames,'first','Robin')
['Robin Hood','Robin Locksley']
>>>store(MyNames,'Mr.Gumby')
>>>lookup(MyNames,'middle','')
['Robin Hood','Robin Locksley','Mr.Gumby']
可以看到,如果默写人的名字、中间名或姓相同,那么结果中会包含所有这些人的信息