有没有一种正确的方法来循环RF中的字典?我使用了pythonic方式,但失败了:
:FOR ${key} ${value} IN &{dict}
Run Code Online (Sandbox Code Playgroud)
output:FOR循环值的数量应该是其变量的倍数.得到2个变量,但有1个值.
同样,当我将字典指向为标量变量时.我在文档中找不到一个例子.有人解决了吗?
PS
我知道解决方法,你使用kw.然后,获取字典键和获取字典值,以更新您使用的值设置为字典$ {key} $ {new_value},但这似乎是人类不友好并使用几个for循环迭代而不是一个.
Jan*_*řík 13
Loop Through Dict
&{mydict} Create Dictionary a=1 b=2
:FOR ${key} IN @{mydict.keys()}
\ Log ${mydict["${key}"]}
Loop Through Dict And Multiplicate Values
&{mydict} Create Dictionary a=1 b=2
:FOR ${key} IN @{mydict.keys()}
\ ${new_value} Evaluate ${mydict["${key}"]}*2
\ Set To Dictionary ${mydict} ${key}=${new_value}
Log ${mydict}
Run Code Online (Sandbox Code Playgroud)
要迭代字典的键,您根本不必使用任何python方法,但是insted使用Robotframework的@修饰符进行列表扩展.例如:
${mydict} Create Dictionary a=1 b=2
:FOR ${key} IN @{mydict}
\ Log The current key is: ${key}
# there are at least to ways to get the value for that key
# "Extended variable syntax", e.g. direct access:
\ Log The value is: ${mydict['${key}']}
# or using a keyword from the Collections library:
\ ${value}= Get From Dictionary ${mydict} ${key}
\ Log The value through Collections is: ${value}
Run Code Online (Sandbox Code Playgroud)
键上的循环很直接,因为在python list()中,字典的强制转换实际上是其键的列表.示例代码:
mydict = {'a': 1, 'b': 2}
print(list(mydict))
# the output is
# ['a', 'b']
Run Code Online (Sandbox Code Playgroud)
有一个python的dict方法items()迭代字典并返回一个key,value元组.遗憾的是,有在机器人框架的for循环,还没有直接的替代品-这是可以做到的Get Dictionary Items关键字.它返回表单中的一维列表
['key1', value_of_key1, 'key2', value_of_key2,]
Run Code Online (Sandbox Code Playgroud)
将其与@列表扩展相结合,您可以获得每个周期中的键和值:
${mydict} Create Dictionary a=1 b=2
${items} Get Dictionary Items ${mydict}
:FOR ${key} ${value} IN @{items}
\ Log The current key is: ${key}
\ Log The value is: ${value}
Run Code Online (Sandbox Code Playgroud)