Python – Ordenar array por caracteres totales

Dada una array de strings, ordenar por datos totales, es decir, caracteres totales en cada fila.

Entrada : test_list = [[“Gfg”, “is”, “Best”], [“Geeksforgeeks”, “Best”], [“ILvGFG”]] 
Salida : [[‘ILvGFG’], [‘Gfg’, ‘ is’, ‘Best’], [‘Geeksforgeeks’, ‘Best’]] 
Explicación : 6 < 11 < 17 caracteres en total respectivamente después de ordenar.

Entrada : test_list = [[“Geeksforgeeks”, “Best”], [“ILvGFG”]] 
Salida : [[‘ILvGFG’], [‘Geeksforgeeks’, ‘Best’]] 
Explicación : 6 < 17 caracteres en total respectivamente después de ordenar . 
 

Método #1: Usar sort() + len() + sum()

En esto, realizamos la tarea de ordenar usando sort(), y la tarea de obtener el total de caracteres se realiza usando len() y sum().

Python3

# Python3 code to demonstrate working of
# Sort Matrix by total characters
# Using sort() + len() + sum()
  
  
def total_chars(row):
  
    # getting total characters
    return sum([len(sub) for sub in row])
  
  
# initializing list
test_list = [["Gfg", "is", "Best"], ["Geeksforgeeks", "Best"],
             ["GFg", "4", "good"], ["ILvGFG"]]
  
# printing original list
print("The original list is : " + str(test_list))
  
# calling utility fnc
test_list.sort(key=total_chars)
  
# printing result
print("Sorted results : " + str(test_list))

Producción:

La lista original es: [[‘Gfg’, ‘is’, ‘Best’], [‘Geeksforgeeks’, ‘Best’], [‘GFg’, ‘4’, ‘good’], [‘ILvGFG’]]
Resultados ordenados: [[‘ILvGFG’], [‘GFg’, ‘4’, ‘good’], [‘Gfg’, ‘is’, ‘Best’], [‘Geeksforgeeks’, ‘Best’]]

Método #2: Usar sorted() + lambda

En esto, sorted() se usa para obtener el resultado ordenado y la función lambda se usa en lugar de la función externa para obtener la lógica de clasificación de strings.

Python3

# Python3 code to demonstrate working of 
# Sort Matrix by total characters 
# Using sorted() + lambda
  
# initializing list
test_list = [["Gfg", "is", "Best"], ["Geeksforgeeks", "Best"],
             ["GFg", "4", "good"], ["ILvGFG"]]
  
# printing original list
print("The original list is : " + str(test_list))
  
# sorted() gives sorted result 
# lambda function providing logic
res = sorted(test_list, key = lambda row : sum([len(sub) for sub in row]))
  
# printing result 
print("Sorted results : " + str(res))

Producción:

La lista original es: [[‘Gfg’, ‘is’, ‘Best’], [‘Geeksforgeeks’, ‘Best’], [‘GFg’, ‘4’, ‘good’], [‘ILvGFG’]] 

Resultados ordenados: [[‘ILvGFG’], [‘GFg’, ‘4’, ‘good’], [‘Gfg’, ‘is’, ‘Best’], [‘Geeksforgeeks’, ‘Best’]]

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 *