Tengo dos listas de resultados de pruebas. Los resultados del ensayo se representan como diccionarios:Comparación de listas de diccionarios
list1 = [{testclass='classname', testname='testname', testtime='...},...]
list2 = [{testclass='classname', testname='testname', ...},...]
La representación diccionario es ligeramente diferente en ambas listas, porque, por una lista que tengo alguna más información. Pero en todos los casos, cada diccionario de prueba en cualquiera de las listas tendrá un nombre de clase y un elemento de nombre de prueba que juntos forman efectivamente una forma de identificar de forma única la prueba y una forma de compararla entre listas.
Necesito averiguar todas las pruebas que están en list1 pero no en list2, ya que representan nuevas fallas de prueba.
para hacer esto que hago:
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;
me pregunto es una forma más pitón de hacer esto. Miré los filtros. La función que usa el filtro necesitaría manejar ambas listas. Una es fácil, pero no estoy seguro de cómo manejar ambas cosas. Sé el contenido de las listas hasta el tiempo de ejecución.
Cualquier ayuda sería apreciada,
Gracias.
errores tipográficos @Wooble fijos – dublintech