di中值的Dict KeyError

2024-09-28 03:25:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我在口述里有一段口述:

{
'123456789': {u'PhoneOwner': u'Bob', 'Frequency': 0},
'98765431': {u'PhoneOwner': u'Sarah', 'Frequency': 0},
}

这样做的目的是扫描一个由数字组成的呼叫列表,并与dict进行比较,从而在每次找到匹配项时增加频率。在

运行脚本时:

^{pr2}$

我得到错误:

KeyError: '18667209918'

(其中18667209918是当前正在搜索的号码)

但当我打印出这段话,只要搜索这个数字,我就能立刻找到它。 有什么想法吗?在


Tags: 目的脚本列表错误数字dict频率bob
3条回答

您正在尝试搜索一个整数键:

phoneNumberDictionary[int(line)]

但是,你的字典是用你的电话号码作为字符串来定义的。在

^{pr2}$

因此,带有integer123456789的密钥不存在。在

dictionary =  {
     '123456789': {u'PhoneOwner': u'Bob', 'Frequency': 0},
     '98765431': {u'PhoneOwner': u'Sarah', 'Frequency': 0},
     }
key_present = '123456789'

try:
    dictionary[key_present]['Frequency'] += 1
except KeyError:
    pass

key_not_present = '12345'

try:
    dictionary[key_not_present]['Frequency'] += 1
except KeyError:
    dictionary[key_not_present] = {'Frequency': 1}

print dictionary

但是你在字典中使用的是一个整数键。在

我认为您仍然可以从异常块中的语句中获得KeyError。从您的语句phoneNumberDictionary[int(line)]['Frequency'] = 1中,python假定一个键值与您所传递的键一起存在,并且它有一个dictionary,其中一个是{}。但是您首先遇到了KeyError异常,因为您没有匹配18667209918的键

因此正确初始化外部字典的键值对。在

使用整数作为键:

{
123456789: {u'PhoneOwner': u'Bob', 'Frequency': 0},
98765431: {u'PhoneOwner': u'Sarah', 'Frequency': 0},
}

你有字符串作为键,但你需要整数。在

相关问题 更多 >

    热门问题