机器人框架中的字典中仅更新最后一次迭代值

问题描述 投票:0回答:1
gtx
    [Arguments]    @{crdnvlslst_params_args}
    ${dictx}    Create Dictionary
    ${dictx_card_vals}    Create Dictionary
    ${lenofcard}=    Get Length    ${crdnvlslst_params_args}
    FOR    ${element}    IN    @{crdnvlslst_params_args}
        ${card}    ${cardtext}=    Evaluate    "${element}".split("=")
        FOR    ${x}    IN RANGE    1    ${lenofcard}+${1}
            ${card_vals}    Set Variable    ${x}
            Set To Dictionary    ${dictx_card_vals}    card_head=${card_vals}    card_val=${EMPTY}
        END
        Set To Dictionary    ${dictx}    ${card}    ${dictx_card_vals}
        Log To Console    ${dictx}
    END

它正在输出:

{'C1': {'card_head': 4, 'card_val': ''}, 'C2': {'card_head': 4, 'card_val': ''}, 'C5': {'card_head': 4, 'card_val': ''}, 'C6': {'card_head': 4, 'card_val': ''}}

但是预期的输出应该是:

{'C1': {'card_head': 1, 'card_val': ''}, 'C2': {'card_head': 2, 'card_val': ''}, 'C5': {'card_head': 3, 'card_val': ''}, 'C6': {'card_head': 4, 'card_val': ''}}

我是机器人框架的新手,请帮忙。

我尝试了各种方法。 就像使用临时字典存储然后更新一样。它不起作用。请帮忙

python dictionary selenium-webdriver robotframework
1个回答
0
投票

在提供的代码片段中,对于外部 for 循环的每次迭代,内部循环运行四次。因此,它会导致将相同的值分配给 ${dictx_card_vals} 字典变量。尝试更改以下代码来解决此问题并实现预期输出,请考虑按如下方式修改代码:

gtx
    [Arguments]    @{crdnvlslst_params_args}
    ${dictx}    Create Dictionary
    ${dictx_card_vals}    Create Dictionary
    ${lenofcard}=    Get Length    ${crdnvlslst_params_args}
    ${x}=   Set Variable    ${0}
    FOR    ${element}    IN    @{crdnvlslst_params_args}
        ${card}    ${cardtext}=    Evaluate    "${element}".split("=")
        ${x}   evaluate   ${x}+${1}
        Set To Dictionary    ${dictx_card_vals}    card_head=${x}    card_val=${EMPTY}
        Set To Dictionary    ${dictx}    ${card}    ${dictx_card_vals}
    END
© www.soinside.com 2019 - 2024. All rights reserved.