Python – Ordenar strings por carácter de frecuencia máxima

Dada una string, la tarea es escribir un programa de Python para realizar la ordenación por el carácter máximo que aparece.

Entrada : test_list = [“geekforgeeks”, “mejor”, “para”, “geeks”] 
Salida : [‘para’, ‘geeks’, ‘mejor’, ‘geekforgeeks’] 
Explicación : 1 < 2 < 3 < 4, es el orden de la frecuencia máxima de aparición de caracteres.

Entrada : test_list = [“geekforgeeks”, “for”, “geeks”] 
Salida : [‘for’, ‘geeks’, ‘geekforgeeks’] 
Explicación : 1 < 2 < 4, ordena la frecuencia máxima de aparición de caracteres. 
 

Método #1: Usar sort() + Counter() + max()

En esto, realizamos una clasificación en el lugar usando sort(), y Counter() se usa para calcular la frecuencia de los caracteres, max() se usa para obtener el máximo de frecuencias calculadas.

Python3

# Python3 code to demonstrate working of
# Sort Strings by maximum frequency character
# Using sort() + Counter() + max()
from collections import Counter
 
# getting maximum character frequency
def max_freq(arg_str):
    res = Counter(arg_str)
    return arg_str.count(max(res, key = res.get))
 
# initializing list
test_list = ["geekforgeeks", "bettered", "for", "geeks"]
 
# printing original list
print("The original list is : " + str(test_list))
 
# performing sort
test_list.sort(key = max_freq)
 
# printing result
print("Sorted List : " + str(test_list))

Producción:

The original list is : ['geekforgeeks', 'bettered', 'for', 'geeks']
Sorted List : ['for', 'geeks', 'bettered', 'geekforgeeks']

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

En esto, realizamos la tarea de realizar la ordenación usando sorted() y la función lambda para obtener una expresión lógica de declaración única, evitando la llamada a una función externa.

Python3

# Python3 code to demonstrate working of
# Sort Strings by maximum frequency character
# Using sorted() + lambda + Counter()
from collections import Counter
 
# getting maximum character frequency
def max_freq(arg_str):
    res = Counter(arg_str)
    return arg_str.count(max(arg_str, key = arg_str.get))
 
# initializing list
test_list = ["geekforgeeks", "bettered", "for", "geeks"]
 
# printing original list
print("The original list is : " + str(test_list))
 
# performing sort
# lambda function to drive logic
res = sorted(test_list,
             key = lambda arg_str : arg_str.count(
               max(Counter(arg_str), key = Counter(arg_str).get)))
 
# printing result
print("Sorted List : " + str(res))

Producción:

The original list is : ['geekforgeeks', 'bettered', 'for', 'geeks']
Sorted List : ['for', 'geeks', 'bettered', 'geekforgeeks']

La complejidad de tiempo y espacio para todos los métodos es la misma:

Complejidad de tiempo: O(n)

Complejidad espacial: O(n)

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 *