Por ejemplo, si tengo la cadena '4K892' y la incluyo en una lista con cada carácter separado. ¿Cómo imprimo el carácter más alto con este pedido "23456789TJQKA"

Pseudocódigo:

list = [4, K, 8, 9, 2]
Highestcharacter(list) = 'K'
1
michael 10 oct. 2019 a las 15:54

3 respuestas

La mejor respuesta

Puede utilizar el parámetro clave de la función max, por ejemplo

Versión lenta :

order = '23456789TJQKA'
result = max('4K892', key=order.index)
print(result)

Versión rápida :

order = '23456789TJQKA'
lookup = {v : i for i, v in  enumerate(order)}
result = max('4K892', key=lookup.get)
print(result)

Tenga en cuenta que rápido y lento se refieren a la complejidad de las funciones, la versión lenta es O(n*2) y la rápida la versión es O(n).

6
Dani Mesejo 10 oct. 2019 a las 12:59

Yo usaría una búsqueda dict:

class Hand:
    def __init__(self, hand):
        self.ranking = {char: index for index, char in enumerate("23456789TJQKA")}
        self.hand = hand

    def sort(self):
        self.hand.sort(key=lambda x: self.ranking[x])

    def __str__(self):
        return str(self.hand)

h = Hand(['4', 'K', '8', '9', '2'])
print(h) # ['4', 'K', '8', '9', '2']
h.sort()
print(h) # ['2', '4', '8', '9', 'K']
2
Error - Syntactical Remorse 10 oct. 2019 a las 13:06

Presentación del algoritmo detrás de la función máxima (lista, clave)

Verifica todos los caracteres de su pseudo lista comenzando desde el final de su lista ordenada. Cada vez que hace una coincidencia, mantiene el resultado en una tercera matriz. El resultado más alto está en la misma celda que el carácter más alto de su pseudolista

0
Giannis 10 oct. 2019 a las 12:57
58323392