class Phonebook:
def __init__(self):
self.bok={('eddie','ed'): '1234',('peter','pete'): '4321'}
def add(self, name, number):
if name in self.bok.keys():
print "The name does already exist."
else:
self.bok[name] = number
print self.bok
def lookup(self, name):
for item in self.bok.keys():
if name in item:
print "Name :", name
print "Telephone number: ", self.bok[item]
def alias(self, name, nick):
self.bok[name, nick] = self.bok[name]
del self.bok[name]
def change(self, name, number):
for item in self.bok.keys():
if name in item:
print "test"
所以,我想做的是添加" Alias"选择的名称如下:
Alias eddie ed(将别名" ed"添加到名称" eddie")
但问题在于,在我完成之后它会成为字典中的元组,所以我无法使用当前函数为同一个名称添加更多别名,因为它只能起作用对于Dictionary而不是Tuples,如:
Alias ed eddinator(将别名" eddinator"添加到名称" ed"它连接到eddie)==>给我错误。
然后出现同样的问题。 更改=别名' es应始终与" head"相同。如果我将eddie的数字更改为9876,那么ed和eddinator也应该拥有它。 (具有相同值的多个键)
查找功能正在运行。 我不确定这是最简单的方法,但它是目前我发现的唯一方式!
答案 0 :(得分:0)
让别名指向头部名称,头部名称指向电话号码:
class Phonebook:
def __init__(self):
self.bok = {'eddie': 1234,
'ed': 'eddie',
'peter': 4321,
'pete': 'peter'}
def add(self, name, number):
if name in self.bok.keys():
print "The name does already exist."
else:
self.bok[name] = int(number)
print self.bok
def lookup(self, name):
val = self.bok[name]
while isinstance(val, str):
val = self.bok[val]
print "Name :", name
print "Telephone number: ", val
def alias(self, name, nick):
if nick in self.bok:
print 'that alias already exists'
return
self.bok[nick] = name
def change(self, name, number):
while isinstance(self.bok[name], str):
name = self.bok[name]
self.bok[name] = int(number)