Ho un elenco semplice di oggetti univoci, alcuni dei quali possono condividere un determinato attributo con altri. Vorrei creare un elenco di liste annidato, con oggetti raggruppati per l'attributo dato. Come un esempio minimo, dato il seguente elenco:Annidare un elenco semplice basato su un criterio arbitrario
>>> flat = ["Shoes", "pants", "shirt", "tie", "jacket", "hat"]
potrei voler gruppo che per lunghezza, per esempio:
>>> nest_by_length(flat)
[['tie', 'hat'], ['shoes', 'pants', 'shirt'], ['jacket']]
Ho visto un paio di similarquestions e suggestions. Tuttavia, in tutti questi casi, il nesting si basa sull'ordinamento della lista di input. Nel mio caso, l'ordinamento della lista di input è completamente imprevedibile, così come il numero di sotto-elenchi per l'output e il numero di articoli per sotto-elenco.
Esiste una funzione standard o un modo idiomatico per eseguire questa operazione?
Apprezzo la tua completezza. Sospettavo che ci fosse qualche funzione come groupby che non sapevo, ma il trucco del dizionario è semplicemente intelligente. Grazie! – Joe