使用 python 字典映射值时出现 KeyError
KeyError while mapping values with python dictionaries
我正在使用 python 将代码替换为字符串:
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] )
我不会得到错误,但我会 return 一个 none 值,因为我将结果附加到其他列表中,我最终得到这样的结果:
['blue', None, 'HIGH', 'GREEN', None, 'GREEN']
处理这个问题的正确方法是什么?
首先测试密钥:
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]
我正在使用 python 将代码替换为字符串:
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] )
我不会得到错误,但我会 return 一个 none 值,因为我将结果附加到其他列表中,我最终得到这样的结果:
['blue', None, 'HIGH', 'GREEN', None, 'GREEN']
处理这个问题的正确方法是什么?
首先测试密钥:
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]