首页 > 解决方案 > 如何在处理字典的函数中处理重复的代码块?

问题描述

我有一个嵌套字典,从中提取特定信息。在某些情况下,我想要的信息可能在几个键之一下,或者可能不存在。

我编写的代码有效,但有复制/粘贴的味道。在处理潜在的 s 时,处理重复代码块的最佳方法是KeyError什么?

def getInfo(dic, key):
    info = ""
    
    try:
        info = dic[key]["other_key_1"]
        return "This result " + info
    except KeyError:
        pass 
    
    try:
        info = dic[key]["other_key_2"]
        return "This result " + info
    except KeyError:
        pass 
    
    try:
        info = dic[key]["other_key_3"]
        return "This result " + info
    except KeyError:
        pass
    
    #if they all don't exist
    return "This result " + key

标签: pythonrefactoring

解决方案


您可以将所有可能的键存储在一个列表中并循环遍历它。

这样,添加新键进行搜索也会更容易。

def getInfo(dic, key):
    info = ""
    possible_keys = ["other_key_1", "other_key_2", "other_key_3"]

    for current_key in possible_keys:
        try:
            info = dic[key][current_key]
            return "This result " + info
        except KeyError:
            pass 
    #if they all don't exist
    return "This result " + key

推荐阅读