Python(2.7.8):电话簿,具有相同值的多个键(别名)
因此,我想做的是将别名添加到所选名称中,如: 别名eddie ed将别名Edd添加到名称eddie 但这里的问题是,在我这样做之后,它会变成字典中的元组,因此我不能用当前函数为同一个名称添加更多别名,因为它只适用于字典,而不适用于元组,如: 别名ed eddinator将别名eddinator添加到名称ed wich连接到eddie==>时出错 然后,同样的问题出现在变革中。 Change=别名应始终具有与标题名称相同的编号,因此如果我将eddie的编号更改为9876,则ed和eddinator也应具有该编号。具有相同值的多个键 查找功能正在运行。Python(2.7.8):电话簿,具有相同值的多个键(别名),python,python-2.7,Python,Python 2.7,因此,我想做的是将别名添加到所选名称中,如: 别名eddie ed将别名Edd添加到名称eddie 但这里的问题是,在我这样做之后,它会变成字典中的元组,因此我不能用当前函数为同一个名称添加更多别名,因为它只适用于字典,而不适用于元组,如: 别名ed eddinator将别名eddinator添加到名称ed wich连接到eddie==>时出错 然后,同样的问题出现在变革中。 Change=别名应始终具有与标题名称相同的编号,因此如果我将eddie的编号更改为9876,则ed和eddinator
我不确定这是不是最简单的方法,但这是目前为止我找到的唯一方法 让别名指向头部姓名,让头部姓名指向电话号码:
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"
那么当你的电话簿中有多个约翰时会发生什么呢?我想你不应该把别名放在其他人的头名上,就像你不能这样做一样“eddie”,“peter”,“1234”,“peter”,“pete”,“4321”}因为peter已经在用了那样的话,你的电话簿就会坏了,因为在现实世界中有人的名字是一样的。。。除非这不是您想要解决的问题,否则我可以使名称唯一,因此它只允许有一个相同的名称,所有数字都必须唯一。文件C:\Users\test\Downloads\phonebook2.py,第23行,在lookup val=self.bok[val]中KeyError:'5555'您想要完整的代码以便查看所有代码吗?但是我如何设置它以便我可以更改别名的编号,但主名称也可以获得编号?恶习-versa@Widdin:在那里!那就够了!但是如果我在别名x上添加一个别名,那么如果我更改第二个别名,第三个别名将改为该号码,那么它实际上不起作用
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)