Foros del Web » Programando para Internet » Python »

meclar dos listas de objetos en python y eliminar duplicadios

Estas en el tema de meclar dos listas de objetos en python y eliminar duplicadios en el foro de Python en Foros del Web. supongamos que tengo esto @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Python: Ver original Class A:   color = "negro"   Class B:    color = "negro"   Class ...
  #1 (permalink)  
Antiguo 12/07/2016, 13:49
 
Fecha de Ingreso: diciembre-2011
Mensajes: 408
Antigüedad: 12 años, 2 meses
Puntos: 18
meclar dos listas de objetos en python y eliminar duplicadios

supongamos que tengo esto

Código Python:
Ver original
  1. Class A:
  2.   color = "negro"
  3.  
  4. Class B:
  5.    color = "negro"
  6.  
  7. Class C:
  8.    color = "blanco"
  9.  
  10. print list(itertools.chain(A, B, C))
  11. #en esta caso hace ouput
  12. [A,B,C]

quiero que muestre una solo resultado del color negros y una del color blanco
  #2 (permalink)  
Antiguo 17/07/2016, 00:19
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años
Puntos: 1360
Respuesta: meclar dos listas de objetos en python y eliminar duplicadios

Hay varias formas de hacer esto y depende de como definas cual duplicado vas a tomar (el primero? el ultimo?), preservar el orden es necesario?, siempre debe de dar el mismo resultado?

Aquí un ejemplo donde, siempre da el mismo resultado, toma el primero que encuentra y preserva el orden en que van apareciendo.
Código Python:
Ver original
  1. class A:
  2.   color = "negro"
  3.  
  4. class B:
  5.    color = "negro"
  6.  
  7. class C:
  8.    color = "blanco"
  9.  
  10. L = [A, B, C]
  11. s = set()
  12. NL = []
  13. for X in L:
  14.     if X.color not in s:
  15.         NL.append(X)
  16.         s.add(X.color)
  17. print NL
  18. # [A, C]

Etiquetas: listas, objetos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:23.