我有两个字典列表的字典,我想比较第一个字典列表与第二个字典列表的值
例如:
Dictionary A contains [{Name:C}, {Name:A}, {Name:B}]
Dictionary B contains [{Name:A}, {Name:B}, {Name:C}]
如何获取 A 的第一个字典 {Name:C} 并检查它是否存在于字典 B 中。
您想查看某个词典列表是否包含至少一个映射的词典
'name': 'C'
?
any(d['name'] == 'C' for d in list_of_dict if 'name' in dict)
如果我正确理解您的问题,您应该能够使用内置的 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
希望有帮助。
无论是字典还是字符串,只要是列表的一部分就可以进行比较。
*** 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
万一比较的是字典的一部分(不是完整的字典),我们就需要另想办法了。如果有帮助请告诉我!