Obtenga una lista única de ID de la lista de objetos
Frecuentes
Visto 4,830 veces
4 Respuestas
4
Puede agregar las identificaciones como claves a un diccionario y recuperar las claves:
d = {}
for item in items:
d[item.id] = item
print d.keys()
Ahora, d.values()
contiene los elementos que tienen los identificadores unificados. Siempre que no haya dos elementos diferentes que tengan la misma identificación, lo anterior no tiene pérdidas.
En contraste con otras soluciones (en el momento de escribir esto), esto también proporciona una buena asignación entre la identificación y el artículo con la identificación especificada.
Respondido el 10 de Septiembre de 13 a las 11:09
2
suponiendo que desea una lista de todas las identificaciones pero sin dobles
all_ids = [x.getId() for x in items]
no_double_ids = list(set(all_ids))
Respondido el 10 de Septiembre de 13 a las 02:09
0
Creo que la forma canónica es la siguiente:
org_list = [1,2,2,4,1,5,3]
list(set(org_list))
reordena la lista, por lo que si eso es un problema, necesita otro método. Ver también:
¿Cómo se eliminan los duplicados de una lista mientras se conserva el orden? http://www.peterbe.com/plog/uniqifiers-benchmark
contestado el 23 de mayo de 17 a las 12:05
0
>>> class ObjectIdHolder(object):
... def __init__(self, object_id):
... self.object_id = object_id
...
>>> ids = list(range(10)) * 2
>>> a = [ObjectIdHolder(x) for x in ids]
>>> unique_ids = {obj.object_id for obj in a}
>>> print unique_ids
set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
Respondido el 10 de Septiembre de 13 a las 02:09
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas python list unique or haz tu propia pregunta.
Eso solo me da una lista desduplicada de objetos, no las identificaciones. - Marcos Richman
ah lo siento, leí mal. básicamente haría lo que hace windwarrior en su respuesta entonces... - Carro