是否可以通过键从命名元组的元组中获取元素?

问题描述 投票:0回答:2

我定义了这个命名的元组

_validation_message = namedtuple("_validation_message", "validation msg")

并使用它作为常规元组中的值,如下所示:

_messages = (
        _validation_message("mandatory", "mandatory field"),
        _validation_message("phone", "please enter a valid phone number),
        _validation_message("name", "please enter both first and last name separated by space")
)

[现在,我正在尝试通过验证名称从_messages获取特定的_validation_message,例如,我希望_messages [“ mandatory”]返回“强制字段”。有什么办法可以实现?

python-3.x data-structures namedtuple
2个回答
0
投票

_ messages [“ mandatory”]将返回“ mandatory field”

要实现这一点,您必须首先意识到messages是一个元组,因此您必须访问其中存在的_validation_message对象,然后过滤掉所需的对象。

此外,您已经声明要获取msg对象的_validation_message属性,对于该属性,validation等于'mandatory'

这可以通过在检查条件时遍历元组来完成:

>>> for vm in _messages:
...     if vm.validation == 'mandatory':
...         print(vm.msg)
...
mandatory field

0
投票

我最终使用以下结构:

_validation_type = namedtuple("_validation_type", "mandatory phone name")

_messages = _validation_type(
    mandatory="mandatory field",
    phone="please enter a valid phone number",
    name="please enter both first and last name separated by space"
)

并通过以下方式访问它:

_messages.mandatory
© www.soinside.com 2019 - 2024. All rights reserved.