当我运行循环时,此函数应该为字典'phoneBook'添加名称和编号,但由于某种原因我无法使其工作。任何想法为什么不呢?非常感谢!
phoneBook = dict()
def addNumber(name, number):
for i in phoneBook:
if i == name:
print 'error'
else:
phoneBook[name] = number
答案 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)