我有一个具有可变深度和不同键的字典列表。
例如:
a = [{attr1: 1,
attr2: {secondary_attr1: 'sometext',
secondary_attr2: 'sometext',
complex_attr: {more_attr: 999}}},
{attr1: 2}]
我正在使用一个类从列表的每个元素中收集我需要的所有信息,但是当我尝试从不在该特定字典中的键中获取项时,我得到KeyError。
以下是我为列表a的每个元素创建实例的方法:
InsertLine(i['attr1'],i['attr2']['secondary_attr1'])
我尝试定义一个简单的函数,但它不起作用:
def handle_keyerror(try_key):
try:
try_key
return try_key
except KeyError:
return 'NULL'
我希望我明白这个问题。
答案 0 :(得分:1)
您的功能不起作用,因为它将始终返回try_key。试试这个。
def handle_keyerror(try_key):
try:
your_dictionary[try_key]
except KeyError:
return None
return try_key
无论如何,检查它是一个坏主意。
您应该使用dict.get(key, default=None)
。如果在dict中没有键key
,那么它将返回默认值。