处理多个 KeyError 异常的更优雅的方法

Sté*_*ane 4 python json python-3.x rdap

我有以下函数,它读取 adict并影响局部变量的一些值,然后将其作为元组返回。

问题是字典中可能不存在某些所需的键。

到目前为止,我已经有了这段代码,它可以实现我想要的功能,但我想知道是否有更优雅的方法来实现它。

def getNetwork(self, search):

    data = self.get('ip',search)
    handle         = data['handle']
    name           = data['name']
    try:
        country        = data['country']     
    except KeyError:
        country = ''
    try:       
        type           = data['type']
    except KeyError:
        type = ''
    try:                
        start_addr     = data['startAddress']
    except KeyError:
        start_addr = ''
    try:                 
        end_addr       = data['endAddress']
    except KeyError:
        end_addr = '' 
    try:                  
        parent_handle  = data['parentHandle']
    except KeyError:
        parent_handle = ''   
    return (handle, name, country, type, start_addr, end_addr, parent_handle)
Run Code Online (Sandbox Code Playgroud)

我有点害怕很多,try: except:但如果我把所有的影响都放在一个单一的里面,try: except:一旦第一个缺失的字典键引发错误,它就会停止影响值。

Sha*_*ger 6

只需使用dict.get. 每次使用:

try:
    country        = data['country']     
except KeyError:
    country = ''
Run Code Online (Sandbox Code Playgroud)

可以等效地替换为:

country = data.get('country', '')
Run Code Online (Sandbox Code Playgroud)