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

例如:

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'

我希望我能清楚地说明。

最佳答案

您的函数无效,因为它将始终返回try_key。尝试这个。

def handle_keyerror(try_key):
    try:
        your_dictionary[try_key]
    except KeyError:
        return None
    return try_key

无论如何,这样检查它是一个坏主意。

您应该使用dict.get(key, default=None)。如果字典中没有键key,则它将返回默认值。

关于python - 可变深度词典的KeyError处理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14772047/

10-10 15:30