La diferencia de dos listas se ha discutido muchas veces, pero a veces tenemos una gran cantidad de datos y necesitamos encontrar la diferencia, es decir, los elementos en dict2 no en 1 para reducir las redundancias. Vamos a discutir ciertas formas en que esto se puede hacer.
Método n.º 1: uso de la comprensión de listas
El método ingenuo para iterar la lista y extraer la diferencia se puede acortar al método en el que acortamos el código y aumentamos la legibilidad mediante la comprensión de listas.
# Python3 code to demonstrate # set difference in dictionary list # using list comprehension # initializing list test_list1 = [{"HpY" : 22}, {"BirthdaY" : 2}, ] test_list2 = [{"HpY" : 22}, {"BirthdaY" : 2}, {"Shambhavi" : 2019}] # printing original lists print ("The original list 1 is : " + str(test_list1)) print ("The original list 2 is : " + str(test_list2)) # using list comprehension # set difference in dictionary list res = [i for i in test_list1 if i not in test_list2] \ + [j for j in test_list2 if j not in test_list1] # printing result print ("The set difference of list is : " + str(res))
Producción :
La lista original 1 es: [{‘HpY’: 22}, {‘BirthdaY’: 2}]
La lista original 2 es: [{‘HpY’: 22}, {‘BirthdaY’: 2}, {‘Shambhavi’ : 2019}]
La diferencia establecida de la lista es: [{‘Shambhavi’: 2019}]
Método n.º 2: Usaritertools.filterfalse()
Esta es una forma diferente en la que esta tarea en particular se puede realizar usando la función de python incorporada. El método filterfalse filtra el elemento no presente de una lista con respecto a otra.
# Python3 code to demonstrate # set difference in dictionary list # using itertools.filterfalse() import itertools # initializing list test_list1 = [{"HpY" : 22}, {"BirthdaY" : 2}, ] test_list2 = [{"HpY" : 22}, {"BirthdaY" : 2}, {"Shambhavi" : 2019}] # printing original lists print ("The original list 1 is : " + str(test_list1)) print ("The original list 2 is : " + str(test_list2)) # using itertools.filterfalse() # set difference in dictionary list res = list(itertools.filterfalse(lambda i: i in test_list1, test_list2)) \ + list(itertools.filterfalse(lambda j: j in test_list2, test_list1)) # printing result print ("The set difference of list is : " + str(res))
Producción :
La lista original 1 es: [{‘HpY’: 22}, {‘BirthdaY’: 2}]
La lista original 2 es: [{‘HpY’: 22}, {‘BirthdaY’: 2}, {‘Shambhavi’ : 2019}]
La diferencia establecida de la lista es: [{‘Shambhavi’: 2019}]
Publicación traducida automáticamente
Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA