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

2024-06-02 07:09:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我在构建电话簿时遇到了一些问题,我有一个添加姓名和号码的函数,一个为此人生成别名的函数(两个号码有两个不同的姓名)。一个我有问题的变化函数。我希望函数更改一个人及其所有别名的数字。我的代码如下所示:

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

我可以在change函数和/或alias函数中更改什么?谢谢。你知道吗


Tags: 函数nameinselfifdef号码姓名
1条回答
网友
1楼 · 发布于 2024-06-02 07:09:24

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

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

相关问题 更多 >