具有默认值的dicts的Python字典

时间:2016-03-10 14:37:32

标签: python python-2.7 dictionary default-value

在python 2.7中,我有一本字典词典,我试图以快速的方式从中获取价值。但是,有时其中一个键(可能是其中一个)在我的字典中不存在,在这种情况下我想得到一个默认值。

我的字典看起来像这样:

values = { '1A' : { '2A' : 'valAA', '2B' : 'valAB'},
           '1B' : { '2A' : 'valBA', '2B' : 'valBB'} }

当我使用现有密钥查询它时效果很好:

>>> values['1A']['2A']
'valAA'
>>> values.get('1B').get('2B')
'valBB'

我如何做到这一点:

>>> values.get('not a key').get('not a key')
'not present'

2 个答案:

答案 0 :(得分:2)

创建一个获取值的函数。

values = { '1A' : { '2A' : 'valAA', '2B' : 'valAB'},
           '1B' : { '2A' : 'valBA', '2B' : 'valBB'} }

def get_value(dict, k1, k2):
    try:
        return dict[k1][k2]
    except KeyError as ex:
        return 'does not exist'

print get_value(values, '1A', '2A')
print get_value(values, '1A', '4A')

答案 1 :(得分:0)

这就像一个魅力:

values.get(key1, {}).get(key2, defaultValue)

如果字典中没有第二个键,则返回第二个.get()的默认值。 如果字典中不存在第一个键,则默认值为空字典,这确保第二个键不会出现在其中。然后还将返回第二个.get()的默认值。

例如:

>>> defaultValue = 'these are not the values you are looking for'
>>> key1, key2 = '1C', '2C'
>>> values.get(key1, {}).get(key2, defaultValue)
'these are not the values you are looking for'
>>> key1, key2 = '1A', '2B'
>>> values.get(key1, {}).get(key2, defaultValue)
'valAB'