0

我有一个具有可变深度和不同键的字典列表。

例如:

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' 

我希望我把问题说清楚了。

4

1 回答 1

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,那么它将返回默认值。

于 2013-02-08T12:04:18.317 回答