比较Robot Framework中的字典列表

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

我有两个字典列表的字典,我想比较第一个字典列表与第二个字典列表的值

例如:

Dictionary A contains [{Name:C}, {Name:A}, {Name:B}]
Dictionary B contains [{Name:A}, {Name:B}, {Name:C}]

如何获取 A 的第一个字典 {Name:C} 并检查它是否存在于字典 B 中。

python list dictionary robotframework
3个回答
0
投票

您想查看某个词典列表是否包含至少一个映射的词典

'name': 'C'

any(d['name'] == 'C' for d in list_of_dict if 'name' in dict)

0
投票

如果我正确理解您的问题,您应该能够使用内置的 Collections 库来完成此操作。此代码获取一个字典中的值,并检查另一个字典中是否存在该值。

*** Settings ***
Library  Collections

*** Variables ***
&{DICTONARY_ONE} =  name1=a  name2=b  name3=c  name4=d
&{DICTONARY_TWO} =  name1=c  name2=a  name3=d  name4=b

*** Test Cases ***
Dictonary Test
    @{dictonary2_list} =  Get Dictionary Values  ${DICTONARY_TWO}
    :For  ${item}  in  @{dictonary2_list}
    \   Dictionary Should Contain Value  ${DICTONARY_ONE}  ${item}

如果这不完全是您所追求的,那么集合中应该有一些东西可以让您做您需要的事情。这是文档的链接。
http://robotframework.org/robotframework/latest/libraries/Collections.html

希望有帮助。


0
投票

无论是字典还是字符串,只要是列表的一部分就可以进行比较。

*** Settings ***
Library  Collections

*** Test Case ***
Dictionary Validation
    ${dict1}=   Create Dictionary   Name    A
    ${dict2}=   Create Dictionary   Name    B
    ${dict3}=   Create Dictionary   Name    C       
    @{li}=  Create List  ${dict3}  ${dict1}  ${dict2}
    @{lj}=  Create List  ${dict1}  ${dict2}  ${dict3}

    FOR    ${item1}    IN    @{li}
        List Should Contain Value  ${lj}  ${item1}
    END
    FOR    ${item1}    IN    @{lj}
        List Should Contain Value  ${li}  ${item1}
    END

万一比较的是字典的一部分(不是完整的字典),我们就需要另想办法了。如果有帮助请告诉我!

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