Ordenar matriz 2D en Python

Muhammad Maisam Abbas 30 enero 2023
  1. Ordenar matriz 2D por número de columna usando la función sort() en Python
  2. Ordene la matriz 2D por número de columna usando la función sorted() en Python
Ordenar matriz 2D en Python

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)]
Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

Artículo relacionado - Python Array