Python | Establecer diferencia en la lista de diccionarios

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *