如果关键字必须存在于字典中,则使用get函数?

时间:2018-07-15 16:35:38

标签: python dictionary

关于在python中使用字典get函数的一个问题。我了解,如果键不存在,get函数可以为dict提供默认值。如果在程序执行过程中我们知道密钥必须存在,该怎么办。像下面的代码。我们应该仍然使用get函数还是只使用 dict [key] 来获取价值。这是否意味着get函数可以替换 dict [key]

value = 'default'
dict_get = dict(key='value')

def test_get(dict_get):
    return dict_get.get('key', 'default_value')


test_get.get('key')
test_get['key']

2 个答案:

答案 0 :(得分:3)

如果键必须存在,则应使用yourdict[key],即__getitem__方法。

如果由于某种原因该密钥不存在,则您想要使程序崩溃并KeyError,因为显然您的程序存在问题,需要修复。

如果键应该存在,但可能不是由于程序逻辑错误引起的其他原因,则可以采取更具防御性的方法。例如,如果要求用户输入有效的密钥但未能输入,则可以使用dict.get退回到默认值,或再次询问用户。

答案 1 :(得分:0)

如果键不存在,

dict.get将返回None。在某些应用程序中,您只想在那里引发一个异常,这就是dict[key]的作用。例如:

scores = {"Larry": 5}

bob_score = scores.get("Bob")  # None

if bob_score:
    print("You're doing great Bob!")
else:
    print("Too bad Bob, you're out.")

我们的代码假定键Bob在字典中,并映射为整数。即使Bob不在字典中,因为None是一个伪造的值,即使该结论是基于错误,我们仍然可以从此代码中获得有意义的答案。在这里提出一个例外会更好。