Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python(2.7.8):电话簿,具有相同值的多个键(别名)_Python_Python 2.7 - Fatal编程技术网

Python(2.7.8):电话簿,具有相同值的多个键(别名)

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

因此,我想做的是将别名添加到所选名称中,如:

别名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)