Как взять последнюю строку из списка, которая содержит в себе 2 и более не последовательных переменных?

Vero

Client
Регистрация
22.11.2019
Сообщения
33
Благодарностей
4
Баллы
8
Коллеги, нужна ваша помощь.

Имеется список. Из него нужно вытащить последнюю строку, которая содержит переменную "A" и переменную "B", которые могут находится в разных позициях (не последовательно). Например:

{'top': 'internal', 'sec': '15', 'ic': 'grade'}
{'top': 'internal', 'sec': '15', 'ic': 'grade'}
{'top': 'external', 'sec': '5', 'ic': 'grade'}
{'top': 'internal', 'sec': '15', 'ic': 'grade'}
{'top': 'internal', 'sec': '158', 'ic': 'grade'}
{'top': 'external', 'sec': '5', 'ic': 'grade'}

Мне нужно взять последнюю строку, которая содержит 'internal' и 'grade' - это будет предпоследняя строка из примера со значением 'sec': '158'.

Помогите найти решение. Вторые сутки насилую поиск по форуму.
 

izubr

Client
Регистрация
11.05.2011
Сообщения
562
Благодарностей
249
Баллы
43
предлагаю алгоритм:
1) получить кол-во строк
2) взять строку {номер}
3) проверка на свои строки 'internal' и 'grade'
если нет, то
взять строку {номер} -1

Получается перебор снизу
 
  • Спасибо
Реакции: Vero

Vero

Client
Регистрация
22.11.2019
Сообщения
33
Благодарностей
4
Баллы
8
Господа, настала пора, когда к форуму нужно прикрутить GPT))

Вот решение на C#. Мне оно подошло.

C#:
var list = project.Lists["List"];
string var1 = project.Variables["var"].Value;
string var2 = project.Variables["var2"].Value;
string result = null;

for (int i = list.Count - 1; i >= 0; i--)
{
    if (list[i].Contains(var1) && list[i].Contains(var2))
    {
        result = list[i];
        break; // Нашли строку с двумя вхождениями, выходим из цикла
    }
}

return result != null ? result : "No matching string found";
 

izubr

Client
Регистрация
11.05.2011
Сообщения
562
Благодарностей
249
Баллы
43
это предложенный алгоритм, только на C# цикл. покомпактнее конечно, чем на 5-7 кубиков городить.
 
  • Спасибо
Реакции: Vero

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)