Come posso uniquify l'elenco seguente in Python:Ottenere elenco di unici multi-set
all_the_ways = [(5,), (2, 2, 1), (2, 1, 2), (2, 1, 1, 1), (1, 2, 2),\
(1, 2, 1, 1), (1, 1, 2, 1), (1, 1, 1, 2), (1, 1, 1, 1, 1)]
output desiderato è:
[(5,), (2, 2, 1), (2, 1, 1, 1), (1, 1, 1, 1, 1)]
cioè ho bisogno di sbarazzarsi di tuple che hanno lo stesso insieme di numeri ma in ordine diverso.
ho cercato
set(all_the_ways)
ma trasporre solo elementi.
E quando lo faccio
list(map(set, all_the_ways))
le cose che ottengono solo peggio:
[{5}, {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1}]
In altre parole ho bisogno di convertire tuple interiore per una collezione che consente a più elementi uguali (set
non è adatto) e per le quali permutazioni di elementi non cambiano la collezione stessa (un po 'come C++' s multiset
)
Quale dovrebbe essere l'uscita quando 'all_the_ways = [(2, 1, 2), (2, 2, 1)]'? – thefourtheye
prima o seconda tupla, non importa – tsionyx
Quindi, il risultato dovrebbe essere in 'all_the_ways'? – thefourtheye