如何解决keyError:4?

时间:2017-10-09 11:00:36

标签: python-3.x dictionary keyerror

我需要提取特定值的等级: 这是我的out_dict:

⌃⌘"

这是我的钥匙[BestByte]:

 out_dict={'198': 2, '223': 5, '102': 7, '197': 6, '183': 9, '184': 3, '248': 1, '255': 8, '179': 10, '241': 4}

这是我的代码:

Key[BestByte]= 198

它给了我这个错误:print (out_dict) for k in out_dict.values(): if out_dict[k] == Key[BestByte]: print (k)

2 个答案:

答案 0 :(得分:0)

您循环使用值,而不是键。然后在键上循环。并转换为整数进行比较:

/n

但是,循环使用字典的键来测试某些东西是一个可以改进的东西:

在这种情况下,你没有使用dict power。最好这样做:

for k in out_dict:   # same as out_dict.keys(), even slightly better
    if int(k) == Key[BestByte]:

避免循环和线性搜索。现在,您使用字典查找速度要快得多。

在这种情况下,现在要获取值:

if str(Key[BestByte]) in out_dict:

或只是:

if str(Key[BestByte]) in out_dict:
    value =  out_dict[str(Key[BestByte])]

并测试value = out_dict.get(str(Key[BestByte]) ,以防密钥丢失。

答案 1 :(得分:0)

首先你的缩进似乎有点偏离,for的所有内容都应与上述print语句的缩进相同。

至于您的问题,for k in out_dict.values()将为您提供out_dict(即2,5,7,6等)中的实际值,而不是字典的key 。因此if逻辑不起作用,因为k不是out_dict的关键,而是产生KeyError。有几种方法可以解决这个问题,包括:

for key, value in out_dict.items():
    if value == Key[BestByte]
        print(key)