# Multidimensional sort

James Stroud jstroud at mbi.ucla.edu
Wed Oct 10 22:53:42 CEST 2007

```termiflyer wrote:
> How do I sort this:
>
>>>> a
> [['3', ['1', '0']], ['4', ['3', '0'], ['2', '0']]]
>
> where the list can be arbitrarily large by the 3rd dimension (i
> think).  E.g.:
>
>>>> a
> [['3', ['1', '0']], ['4', ['2', '0'], ['3', '0']]]
>
>
> Thanks
>

Your difficulties come from an ill-defined third dimension. You should
reorganize to produce this heretofore potential third dimension:

a = [(i[0], i[1:]) for i in a]

Then sort the reorganized list now that it has a structure amenable to
sorting:

for i in a:
i[1].sort()

Then, if you are pressed, transform it back:

a = [[i[0]] + i[1] for i in a]

E.g.:

py> a = [['3', ['1', '0']], ['4', ['3', '0'], ['2', '0']]]
py> a = [(i[0], i[1:]) for i in a]
py> a
[('3', [['1', '0']]), ('4', [['3', '0'], ['2', '0']])]
py>    for i in a:
...      i[1].sort()
...
py> a
[('3', [['1', '0']]), ('4', [['2', '0'], ['3', '0']])]
py> a = [[i[0]] + i[1] for i in a]
py> a
[['3', ['1', '0']], ['4', ['2', '0'], ['3', '0']]]

James

--
James Stroud
UCLA-DOE Institute for Genomics and Proteomics
Box 951570
Los Angeles, CA  90095

http://www.jamesstroud.com

```