【发布时间】:2014-05-21 19:39:40
【问题描述】:
谁能告诉我为什么那个函数会给我一个 KeyError?
def countLinks(url):
urlCounter = {"dummy":[0,0]}
urlList = getLinks(url)
for x in urlList:
if x in urlCounter:
urlCounter[x][1] += 1
else:
urlCounter[x][1] = 1
return urlCounter
getLinks 只返回一个包含 HTML 链接的列表。
第二个值的原因是我需要跟踪这个 URL 是否被抓取。
顺便说一句,使用了 Python 3.0。
提前多谢
【问题讨论】:
-
if x (not) in urlCounter:和urlCounter[x][1] = 1当您知道密钥不在字典中时,您正在访问它。难怪有keyerror。 -
该死的,没有列表作为它工作的值,只是添加了那个键和值。谢谢你的提示,我想我可能知道一个解决方案:-)
-
def countLinks(url): urlCounter = {"dummy":[0,0]} urlList = getLinks(url) for x in urlList: if x in urlCounter: urlCounter[x][0] += 1 else: urlCounter[x] = [1,0] return urlCounter
-
@sadoMasupilami 那是因为
dict[x] = y将在字典中创建条目。在您的示例中,您正在列表中设置一个值,但要访问该值,您需要通过键访问该列表。一把不存在的钥匙。 -
其他:urlCounter[x] = [1,0]
标签: python dictionary keyerror