Ho due elenchi di risultati del test. I risultati del test sono rappresentati come dizionari:Confronto degli elenchi di dizionari
list1 = [{testclass='classname', testname='testname', testtime='...},...]
list2 = [{testclass='classname', testname='testname', ...},...]
La rappresentazione dizionario è leggermente diverso in entrambe le liste, perché per una lista Ho qualche ulteriori informazioni. Ma in tutti i casi, ogni dizionario di test in entrambi gli elenchi avrà un nome di classe e un elemento testname che insieme formano un modo efficace per identificare in modo univoco il test e un modo per confrontarlo tra gli elenchi.
Ho bisogno di capire tutti i test che sono in list1 ma non in list2, in quanto rappresentano nuovi fallimenti di test.
Per fare questo che faccio:
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;
mi chiedo è un modo più pitone di fare questo. Ho guardato i filtri. La funzione utilizzata dal filtro dovrebbe avere un handle per entrambe le liste. Uno è facile, ma non sono sicuro di come otterrebbe un vantaggio per entrambi. Conosco il contenuto degli elenchi fino al runtime.
Qualsiasi aiuto sarebbe apprezzato,
Grazie.
errori di battitura @Wooble fissati – dublintech