Сравнить список словарей в Robot Framework

#python #list #dictionary #robotframework

#python #Список #словарь #robotframework

Вопрос:

У меня есть два списка списка словарей, и я хочу сравнить значение первого списка словаря со вторым списком словаря

Например:

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

Как взять 1-й словарь A {Name: C} и проверить, существует ли он в словаре B.

Комментарии:

1. Не могли бы вы уточнить свой вопрос и вставить свой код? У вас есть 2 «списка терминов» или «список списков терминов»?

Ответ №1:

Вы хотите посмотреть, содержит ли какой-либо список словарей хотя бы один словарь, который отображает 'name': 'C' ?

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

Комментарии:

1. Я хочу сравнить оба значения списка словарей и возвращает true, если значения обоих словарей одинаковы. Я пытаюсь в robot Framework. Был бы признателен, если бы вы помогли в Robot framework.

Ответ №2:

Если я правильно понимаю ваш вопрос, вы должны быть в состоянии сделать это, используя встроенную библиотеку коллекций. Этот код взял значения в одном словаре и проверил, существует ли значение в другом.

 *** Settings ***
Library  Collections

*** Variables ***
amp;{DICTONARY_ONE} =  name1=a  name2=b  name3=c  name4=d
amp;{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

Я надеюсь, что это поможет.

Комментарии:

1. Как насчет того, есть ли у меня список словарей. Я попробовал приведенный выше тестовый пример со списком словарей, но я не смог увидеть результат

Ответ №3:

Будь то словарь или строка, если это часть списка, его можно сравнивать.

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

На всякий случай, если сравнение проводится по части словаря (не полного словаря), нам нужно подумать о другом способе. Дайте мне знать, если это поможет!