如何使python字典键错误返回false

时间:2016-04-30 22:11:12

标签: python json dictionary

我正在使用动态响应结构(键)处理JSON数据集,并且如果存在某些键,则需要执行代码。现在,如果密钥不存在,它会抛出一个键错误,我试图通过bool操作数,但似乎键错误胜过Python中的bool操作数。

bool(dictionary['key'])

KeyError: 'key'

我觉得有一些方法可以做到这一点比我尝试更容易,但只是通过研究找不到任何东西。任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:6)

你想要None。默认情况下,这会返回False,其评估为canvas.on('mouse:down', handler);

答案 1 :(得分:1)

使用dict.get并在未找到密钥时设置默认值

dictionary.get('key', 'NotFound')

答案 2 :(得分:0)

您是否尝试过使用dictionary.has_key(key_name)如果密钥存在,此方法将返回true,否则返回false。

答案 3 :(得分:-1)

你想要这样的东西吗?

#!python3
json_data = [
        { 'key1':
            { 'key2':
                [
                    {'key3': 1 }
                    ]
                }
            }
        ]

def get_deep(*keys):
    try:
        doa = json_data
        for key in keys:
            doa = doa[key]
        return doa
    except KeyError:
        return None
    except IndexError:
        return None

tests = (
    # Want, Keys...
    (1, 0, 'key1', 'key2', 0, 'key3'),
    (None, 1, 'key1', 'key2', 0, 'key3'),
    (None, 0, 'key11', 'key2', 0, 'key3'),
    (None, 0, 'key1', 'key22', 0, 'key3'),
    (None, 0, 'key1', 'key2', 1, 'key3'),
    (None, 0, 'key1', 'key2', 0, 'key33'),
)


for i,test in enumerate(tests):
    expected,*keys = test
    got = get_deep(*keys)
    if got is expected:
        print(i, "OK")
    else:
        print(i, "FAIL", got, "is not", expected)