/ / Zoradiť poradie zoznamov v multidimenzionálnom poli v Pythone - python, polia, triedenie, multidimenzionálne pole

Zoradiť poradie zoznamov v multidimenzionálnom poli v jazyku Python - python, polia, triedenie, multidimenzionálne pole

Tieto údaje by som chcel zmeniť v jazyku Python (zoradené abecedne):

test = [["ma", "e", "wa", "ka"], ["ma", "haa", "laa"], ["ma", "ka", "m", "haa", "laa", "ca", "j", "ra"], ["ma", "ra"], "ma"]

Do multidimenzionálneho poľa s jeho položkami zoradené podľa množstva položiek v každom zozname ako toto:

test = ["ma", ["ma", "ra"], ["ma", "haa", "laa"], ["ma", "e", "wa", "ka"], ["ma", "ka", "m", "haa", "laa", "ca", "j", "ra"]]

Ak ste sa práve pozreli na dĺžku, "d, ako by som chcel ísť z [4, 3, 8, 2, 1] na [1, 2, 3, 4, 8], ale nechcem, aby bolo riešenie potrebné. špecifické pre tento príklad.

odpovede:

4 pre odpoveď č. 1
test = sorted(test, key=lambda x: len(x) if type(x)==list else 1)

Snažil som sa:

>>> test = [["ma", "e", "wa", "ka"], ["ma", "haa", "laa"], ["ma", "ka", "m", "haa", "laa", "ca", "j", "ra"], ["ma", "ra"], "ma"]
>>> test = sorted(test, key=lambda x: len(x) if type(x)==list else 1)
>>> test
["ma", ["ma", "ra"], ["ma", "haa", "laa"], ["ma", "e", "wa", "ka"], ["ma", "ka", "m", "haa", "laa", "ca", "j", "ra"]]

Jediná zvláštna vec je, že nie všetky prvky vo vašom pôvodnom zozname sú zoznamy, zaradili ste reťazce a zoznam, preto som musel pridať podmienku ak typ (x) == zoznam ostatných 1


1 pre odpoveď č. 2

Jedno riešenie:

sorted(test, key=lambda x: isinstance(x,list) and len(x) or 1)