HOWTO · Python

Ordenar matriz 2D en Python

Hay dos métodos principales que se pueden usar para ordenar un array 2d en Python, la función sort() y la función sorted().

En esta página

Presentaremos diferentes métodos para ordenar arreglos multidimensionales en Python.

Hay funciones integradas como sort() y sorted() para la clasificación de matrices; estas funciones también nos permiten tomar una clave específica que podemos usar para definir qué columna ordenar si queremos.

El método sort() modifica la lista en el lugar, y una función integrada sorted() crea una nueva lista ordenada a partir de un iterable. También veremos los diferentes métodos para definir iterable para las funciones sort() y sorted().

Ordenar matriz 2D por número de columna usando la función sort() en Python

Para ordenar la matriz por número de columna, debemos definir la key en la función sort() como,

lst = [["John", 5], ["Jim", 9], ["Jason", 0]]

lst.sort(key=lambda x: x[1])
print(lst)

Producción :

[['Jason', 0], ['John', 5], ['Jim', 9]]

Por motivos de clasificación, el parámetro key debe establecerse en el valor de una función que acepta un único argumento y devuelve una key que puede utilizarse en el proceso de clasificación. Es posible hacer esta estrategia rápidamente porque la función clave se llama solo una vez para cada registro de entrada.

Un patrón que se usa con frecuencia es ordenar objetos complejos usando uno o más de los índices del objeto como clave.

lst = [
    ("john", "C", 15),
    ("jane", "A", 12),
    ("dave", "D", 10),
]

lst.sort(key=lambda lst: lst[2])
print(lst)

Producción :

[('dave', 'D', 10), ('jane', 'A', 12), ('john', 'C', 15)]

En el código anterior en key=lambda lst:lst[2], lst[2] define qué columna debe usarse para la clasificación. En nuestro caso, lst está ordenado por la tercera columna.

Ordene la matriz 2D por número de columna usando la función sorted() en Python

Para ordenar la matriz por número de columna, debemos definir la key en la función sorted() como,

li = [["John", 5], ["Jim", 9], ["Jason", 0]]

sorted_li = sorted(li, key=lambda x: x[1])
print(sorted_li)

Producción :

[['Jason', 0], ['John', 5], ['Jim', 9]]

Tenga en cuenta que la función sorted() devuelve una nueva lista en el código anterior, mientras que la función sort() reemplaza la lista original.

La clave también se puede definir alternativamente usando itemgetter de la biblioteca operador.

from operator import itemgetter

lst = [
    ("john", "C", 15),
    ("jane", "A", 12),
    ("dave", "D", 10),
]

sorted_lst = sorted(lst, key=itemgetter(1))
print(sorted_lst)

Producción :

[('jane', 'A', 12), ('john', 'C', 15), ('dave', 'D', 10)]