Jak mogę uniquify następującą listę w Pythonie:Uzyskaj listę unikalnych wielu zestawów
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)]
Pożądany wyjścia:
[(5,), (2, 2, 1), (2, 1, 1, 1), (1, 1, 1, 1, 1)]
czyli muszę pozbyć krotek, które mają takie same zestaw liczb, ale w innej kolejności.
Próbowałem
set(all_the_ways)
ale tylko transpozycja elementów.
I kiedy zrobić
list(map(set, all_the_ways))
rzeczy tylko coraz gorzej:
[{5}, {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1, 2}, {1}]
Innymi słowy muszę konwertować wewnętrzną krotki do kolekcji, która pozwala kilku równych elementów (set
nie jest odpowiedni) i dla których permutacje elementów nie zmieniają samej kolekcji (trochę jak C++ 's multiset
)
Co powinno być wyjście kiedy 'all_the_ways = [(2, 1, 2), (2, 2, 1)]'? – thefourtheye
pierwsza lub druga krotka, nie ma znaczenia – tsionyx
Więc wynik powinien być w 'all_the_ways'? – thefourtheye