You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Robot Framework字典仅更新最后一次迭代值问题求助

Robot Framework 字典赋值问题:所有子字典card_head值相同

我是Robot Framework新手,编写了gtx关键字,代码如下:

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': ''}}

尝试过用临时字典存储更新但没解决,求帮助。


问题原因

  1. 冗余内层循环覆盖值:每个外层循环里嵌套的FOR循环会遍历1到总参数长度的所有值,导致当前元素的card_head被最终覆盖为总长度值(比如总长度是4时,最后x的值为4)。
  2. 字典引用复用:${dictx_card_vals}在循环外创建,每次修改都是操作同一个字典对象,外层${dictx}的所有条目都指向这个字典,最终所有子字典都会显示最后一次修改的结果。

修正后的代码

gtx
    [Arguments]    @{crdnvlslst_params_args}
    ${dictx}    Create Dictionary
    ${index}    Set Variable    1
    FOR    ${element}    IN    @{crdnvlslst_params_args}
        ${card}    ${cardtext}=    Evaluate    "${element}".split("=")
        # 每次循环创建新的子字典,避免引用复用
        ${dictx_card_vals}    Create Dictionary    card_head=${index}    card_val=${EMPTY}
        Set To Dictionary    ${dictx}    ${card}    ${dictx_card_vals}
        # 序号自增
        ${index}    Evaluate    ${index} + 1
        Log To Console    ${dictx}
    END

改动说明

  • 移除冗余的内层FOR循环,用${index}变量记录当前元素的序号,每次循环后自增,直接赋值给card_head。
  • 将子字典${dictx_card_vals}的创建移到外层循环内部,确保每个主字典条目对应独立的子字典对象。
  • 简化子字典初始化,直接在Create Dictionary时设置键值对,减少不必要的步骤。

内容的提问来源于stack exchange,提问作者Automation Guy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 10:30:17