使用python词典映射值时的KeyError

时间:2016-05-17 08:57:18

标签: python dictionary keyerror

我正在使用python用string替换代码:

decoding_dict = {'A1A': 'blue', 'ZA3': 'GREEN', 'M9': 'HIGH'}

我有一个包含这些代码的列表:

codes_list = [['A1A'], ['ZA3', 'M9'], ['A6A']] 

如果是这种情况,例如,第三个列表中的代码没有在字典中定义,所以如果我尝试:

decoding_dict[ codes_list[2][0] ] 

我将获得KeyError例外,如果不是我使用的话:

decoding_dict.get(codes_list[2][0] ) 

我不会收到错误,但我会返回一个无值,因为我将结果附加到其他列表中我最终会得到这样的结果:

['blue', None, 'HIGH', 'GREEN', None, 'GREEN']

处理这个问题的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

首先测试密钥:

if codes_list[2][0] in decoding_dict:
    # do something with decoding_dict[codes_list[2][0]] 

您可以使用包含该过滤器的列表推导来生成输出:

[decoding_dict[v] for sublist in codes_list for v in sublist if v in decoding_dict]