Python添加到字典循环

2024-04-25 11:38:51 发布

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

当我运行循环时,这个函数应该在字典'phoneBook'中添加一个名字和号码,但是由于某些原因,我无法让它工作。为什么不呢?谢谢!

 phoneBook = dict()
    def addNumber(name, number):
        for i in phoneBook:
            if i == name:
                print 'error'
            else:
                phoneBook[name] = number

Tags: 函数nameinnumberforif字典def
2条回答

实际上根本不需要循环,只需使用in关键字对照字典中的现有键检查名称即可。

phoneBook = dict()
def addNumber(name, number):
    if name in phoneBook:
        print 'error'
    else:
        phoneBook[name] = number

何必费心

people = ((data["name"],data["number"]) for data in json.loads(some_list)[::-1])
phoneBook = dict(people)

这将以相反的顺序在列表中运行,因此名称的第一个匹配项将是存储在字典中的名称

检查的时间比插入要长。。。即使最后写得太多

但是要回答您的问题

您的原始代码不起作用,因为您的else在forloop中,如果书中的任何名称与插入的名称不匹配,那么实际上就是添加了条目

您可以很容易地修复它,当找到匹配项时退出函数。。。在你检查完所有的名字之前不要把名字加到字典里

phoneBook = dict()
def addNumber(name, number):
    for i in phoneBook:
        if i == name:
            print 'error'
            return
    phoneBook[name] = number

addNumber("james",56)
addNumber("Tommy",26)
addNumber("james",77)

相关问题 更多 >