当我运行循环时,此函数应该为字典'phoneBook'添加名称和编号,但由于某种原因我无法使其工作.任何想法为什么不呢?非常感谢!
phoneBook = dict()
def addNumber(name, number):
for i in phoneBook:
if i == name:
print 'error'
else:
phoneBook[name] = number
Run Code Online (Sandbox Code Playgroud)
Cor*_*mer 13
您根本不需要循环,您可以使用in关键字来检查字典中现有键的名称.
phoneBook = dict()
def addNumber(name, number):
if name in phoneBook:
print 'error'
else:
phoneBook[name] = number
Run Code Online (Sandbox Code Playgroud)
何必
people = ((data["name"],data["number"]) for data in json.loads(some_list)[::-1])
phoneBook = dict(people)
Run Code Online (Sandbox Code Playgroud)
这将通过列表以相反的顺序运行,因此名称的第一次出现将是存储在字典中的名称
检查比插入它需要更长的时间......即使它最终会被写入
然而,回答你的问题
您的原始代码无效,因为如果书中的任何名称与插入的名称不匹配,则您的其他内容在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)
Run Code Online (Sandbox Code Playgroud)