返回列表中的值的元组

时间:2014-10-03 17:53:21

标签: python list tuples namedtuple

我有错误列表及其相关代码和说明:

Exception = namedtuple("Exception", "code name description")
exceptions = [
    Exception(1, "ILLEGAL FUNCTION", "Definition 1"),
    Exception(2, "ILLEGAL DATA ADDRESS", "Definition 2"),
    Exception(3, "ILLEGAL DATA VALUE", "Definition 2")
]

我想要一个使用code == exception_code检索异常的函数。我一直在寻找,我能想出的最接近的是:

# Returns the Exception tuple corresponding to the exception_code
def getException(self):
    return [item for item in exceptions if item[0] == self.exception_code]

这可行,但实际上返回列表。我使用Python的经验很差,我无法弄清楚如何简单地返回元组

注意:总会有一个代码为== exception_code

的元组

print x.getException的示例输出与我当前的getException

[Exception(code=2, name='ILLEGAL DATA ADDRESS', description='Definition 2')]

1 个答案:

答案 0 :(得分:3)

在这种情况下,你最好将异常作为dict:

exceptions = {
    1: Exception(1, "ILLEGAL FUNCTION", "Definition 1"),
    2: Exception(2, "ILLEGAL DATA ADDRESS", "Definition 2"),
    3: Exception(3, "ILLEGAL DATA VALUE", "Definition 2")
}

从这里开始,您的getException功能变得微不足道了:

def getException(code):
    return exceptions[code]

...你必须想知道函数调用是否看起来比仅仅内联更好: - )