У меня есть два списка результатов испытаний.Результаты теста представлены в виде словарей:
list1 = [{testclass='classname', testname='testname', testtime='...},...]
list2 = [{testclass='classname', testname='testname', ...},...]
Представление в словаре немного отличается в обоих списках, потому что для одного списка у меня есть немного больше информации.Но во всех случаях каждый тестовый словарь в любом списке будет иметь элемент classname и testname, которые вместе эффективно образуют способ уникальной идентификации теста и способ его сравнения по спискам.
Мне нужно выяснить всетесты, которые есть в списке list1, но не в списке list2, так как они представляют новые ошибки теста.
Для этого я делаю:
def get_new_failures(list1, list2):
new_failures = []
for test1 in list1:
for test2 in list2:
if test1['classname'] == test2['classname'] and \
test1['testname'] == test2['testname']:
break; # Not new breakout of inner loop
# Doesn't match anything must be new
new_failures.append(test1);
return new_failures;
Мне интересно, это более питонский способ сделать это,Я посмотрел на фильтры.Функция, которую использует фильтр, должна была бы получить дескриптор обоих списков.Один из них прост, но я не уверен, как он справится с обоими.Я знаю содержимое списков до времени выполнения.
Любая помощь будет оценена,
Спасибо.