Tengo una lista de listas que se parece a esto:
animal_groups = [['fox','monkey', 'zebra'], ['snake','elephant', 'donkey'],['beetle', 'mole', 'mouse'],['fox','monkey', 'zebra']]
¿Qué es lo mejor para eliminar listas duplicadas? Usando el ejemplo anterior, estoy buscando un código que produzca esto:
uniq_animal_groups = [['fox','monkey', 'zebra'], ['snake','elephant', 'donkey'],['beetle', 'mole', 'mouse']]
Primero pensé que podía usar set()
, pero esto no parece funcionar en una lista de listas. También vi un ejemplo usando itertools
, pero el código no era del todo claro para mí. ¡Gracias por la ayuda!
uniq_animal_groups = set(map(tuple, animal_groups))
hará el truco, aunque terminará con un conjunto de tuplas en lugar de un conjunto de listas. (Por supuesto, puede volver a convertir esto en una lista de listas, pero a menos que haya una razón específica para hacerlo, ¿para qué molestarse?)
Convierte las listas en tuplas, y luego puedes ponerlas en un conjunto.
Esencialmente:
uniq_animal_groups = set(map(tuple, animal_groups))
Si prefieres que el resultado sea una lista de listas, prueba:
uniq_animal_groups = [list(t) for t in set(map(tuple, animal_groups))]
o:
uniq_animal_groups = map(list, set(map(tuple, animal_groups)))
Cuando no te importa la clasificación de las listas internas, convierte todo en conjuntos primero:
uniq_animal_groups = map(list, set(map(tuple, map(set, animal_groups))))