Python - 更改字典中的所有特定值

时间:2016-10-18 06:46:52

标签: python dictionary

我在构建电话簿方面遇到了一些问题,我有一个添加姓名和号码的功能,这个功能可以为人提供别名(两个号码有两个不同的名字)。和一个我有问题的变化功能。我希望该函数能够更改一个人及其所有别名的数量。我的代码如下所示:

class Phonebook: #vi skapar en klass

    def __init__(self): #för att initiera scriptet (constructor)
        self.pb={} #dictionary

    def add(self,namn,nummer):
        if namn in self.pb:
            print "Name already in contacts!" #kolla om namnet finns
        elif nummer in self.pb.viewvalues(): #kolla om numret finns
            print "Number already exists for a contact!"
        else:
            self.pb[namn]=nummer #lägga till namn med tel.nr

    def lookup(self,namn):
        if namn in self.pb:
            print
            print self.pb[namn] #skriver ut numret till namnet
            print
        else:
            print "Name is not in contacts"
            print 

    def alias(self,namn,nummer):
        self.pb[nummer]=self.pb[namn] #två namn får samma nummer

    def change(self,namn,nummer):
        if namn in self.pb:
            for godtyckligt in self.pb:
                if self.pb[namn]==self.pb[godtyckligt]:
                    self.pb[godtyckligt]=nummer

我可以在更改功能和/或别名功能中更改哪些内容?感谢。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您需要将旧号码替换为某个名称,然后将新号码添加为别名,将其设置为名称,然后将旧号码删除为别名:

def change(self,namn,nummer):
    old_number = '' 
    if namn in self.pb:
        for godtyckligt in self.pb:
            if self.pb[namn]==self.pb[godtyckligt]:
                old_nummer = self.pb[godtyckligt]
                self.pb[godtyckligt]=nummer
                self.pb[nummer]=godtyckligt    
                del self.pb.pop(old_nummer)

您的alias方法应该是这样的:

#You need to define another dict aliases
#aliases = {}

def alias(self, name0, name1):
    self.aliases[name0].append(name1)

然后更改lookup方法:

def lookup(self,namn):
    if namn in self.pb:
        print
        print self.pb[namn] #skriver ut numret till namnet
        print
        return

    else:
        for name in aliases:
            if namn in aliases[name]:
                print
                print self.pb[namn] #skriver ut numret till namnet
                print
                return

    print "Name is not in contacts"
    print     
    return