当我运行循环时,该函数应该为字典'phoneBook'添加名称和编号,但出于某种原因,我无法使其工作。任何想法为什么不呢?非常感谢!Python添加到词典循环
phoneBook = dict()
def addNumber(name, number):
for i in phoneBook:
if i == name:
print 'error'
else:
phoneBook[name] = number
当我运行循环时,该函数应该为字典'phoneBook'添加名称和编号,但出于某种原因,我无法使其工作。任何想法为什么不呢?非常感谢!Python添加到词典循环
phoneBook = dict()
def addNumber(name, number):
for i in phoneBook:
if i == name:
print 'error'
else:
phoneBook[name] = number
你并不真正需要的循环可言,你可以只使用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)
这会以相反的顺序在列表中运行,这样的名字第一次出现将是一个存储在字典
需要更长的时间来检查比只是插入它...即使它结束写过
回答你的问题然而
你原来的代码没有工作,因为你还有就是for循环本质上添加条目内,如果书中的任何名称不匹配退出功能时插入
的名字,你可以解决它很轻松了,找到一个匹配项...并且不会将名称添加到字典中,直到您检查了所有名称
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)
哦好吧谢谢!为什么它不与循环一起工作? – bugsyb 2014-10-08 18:21:50
因为即使数字存在,只有当它与该键相比时,它才会匹配,所有其他键都不会与'name'匹配,因此它会覆盖现有的'name'值。更糟糕的是,出于同样的原因,它会将该值重写N次(其中N是键的数量)。 – CoryKramer 2014-10-08 18:28:51