Mam płaską listę unikatowych obiektów, z których niektóre mogą współdzielić dany atrybut z innymi. Chcę utworzyć zagnieżdżoną listę list z obiektami pogrupowanymi według podanego atrybutu. Jako minimalną przykład podano następującą listę:Zagnieżdżanie płaskiej listy na podstawie dowolnego kryterium
>>> flat = ["Shoes", "pants", "shirt", "tie", "jacket", "hat"]
może chcę go przez grupę długości, np
>>> nest_by_length(flat)
[['tie', 'hat'], ['shoes', 'pants', 'shirt'], ['jacket']]
Widziałem parę similarquestions i suggestions. Jednak we wszystkich tych przypadkach zagnieżdżanie opiera się na uporządkowaniu listy wejściowej. W moim przypadku uporządkowanie listy wejściowej jest całkowicie nieprzewidywalne, podobnie jak liczba podlist dla wyjścia i liczba pozycji na podlistę.
Czy istnieje standardowa funkcja lub idiomatyczny sposób osiągnięcia tego?
Doceniam twoją dokładność. Podejrzewałem, że nie będzie takiej funkcji jak groupby, ale sztuczka ze słownika jest po prostu sprytna. Dzięki! – Joe