比较Robot Framework中的字典列表

时间:2016-10-19 03:57:28

标签: python list dictionary robotframework

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

例如:

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

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

3 个答案:

答案 0 :(得分:0)

您想查看某些字典列表是否包含至少一个映射'name': 'C'的字典?

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

答案 1 :(得分:0)

如果我正确理解您的问题,您应该可以使用内置的集合库来执行此操作。此代码获取一个字典中的值并检查该值是否存在于另一个字典中。

*** 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

我希望有所帮助。

答案 2 :(得分: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}  

如果比较是在字典的一部分(不完整的字典),我们需要考虑另一种方式。让我知道它是否有帮助!