Python添加到字典循环

时间:2014-10-08 18:15:29

标签: python dictionary

当我运行循环时,此函数应该为字典'phoneBook'添加名称和编号,但由于某种原因我无法使其工作。任何想法为什么不呢?非常感谢!

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

2 个答案:

答案 0 :(得分:12)

根本不需要循环,您可以使用in关键字来检查字典中现有键的名称。

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

答案 1 :(得分:6)

为什么要打扰

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

这将通过列表以相反的顺序运行,因此第一次出现的名称将是存储在字典中的名称

它需要更长的时间来检查而不是仅仅插入它...即使它最终会被写入

然而

回答你的问题

您的原始代码无效,因为如果书中的任何名称与插入的名称不匹配,则您的其他内容在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)