Ordenar lista mixta en Python

A veces, mientras trabajamos con Python, podemos tener un problema en el que necesitamos ordenar una lista particular que tiene tipos de datos mixtos. Que contiene números enteros y strings y debemos ordenar cada uno de ellos en consecuencia. Analicemos ciertas formas en que se puede resolver este problema.

Método #1: Usar sort()+ comparador

Este problema se puede resolver utilizando la funcionalidad de clasificación proporcionada por Python. Podemos construir nuestro propio comparador personalizado para completar la tarea de tipo mixto.

# Python3 code to demonstrate working of
# Sort Mixed List
# using sort() + comparator
  
# comparator function for sort
def mixs(num):
    try:
        ele = int(num)
        return (0, ele, '')
    except ValueError:
        return (1, num, '')
  
  
# initialize list 
test_list = [4, 'gfg', 2, 'best', 'is', 3]
  
# printing original list 
print("The original list : " + str(test_list))
  
# Sort Mixed List
# using sort() + comparator
test_list.sort(key = mixs)
  
# printing result
print("List after mixed sorting : " + str(test_list))
Producción :

The original list : [4, 'gfg', 2, 'best', 'is', 3]
List after mixed sorting : [2, 3, 4, 'best', 'gfg', 'is']

Método #2: Usarsorted() + key + lambda + isdigit()

La combinación de las funcionalidades anteriores también se puede utilizar para lograr una solución a este problema. En esto, simplemente ordenamos la lista usando sorted() usando la funcionalidad clave usando la función lambda para segregar dígitos usando isdigit().

# Python3 code to demonstrate working of
# Sort Mixed List
# using sorted() + key + lambda + isdigit()
  
# initialize list 
test_list = ['4', 'gfg', '2', 'best', 'is', '3']
  
# printing original list 
print("The original list : " + str(test_list))
  
# Sort Mixed List
# using sorted() + key + lambda + isdigit()
res = sorted(test_list, key = lambda ele: (0, int(ele))
                        if ele.isdigit() else (1, ele))
  
# printing result
print("List after mixed sorting : " + str(res))
Producción :

The original list : ['4', 'gfg', '2', 'best', 'is', '3']
List after mixed sorting : ['2', '3', '4', 'best', 'gfg', 'is']

Publicación traducida automáticamente

Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *