Cómo ordenar tuplas no por clave sino por el valor de la clave

Vamos a construir una lista de tuplas con la forma (valor,clave) para luego ordenarlo usando la cláusula sorted.

dic = {'llave1':20, 'llave3':3, 'llave2':233}
ordenar = sorted(dic.items())
 
for x,y in sorted(dic.items()):
   print(x,y)

Lo anterior nos mostrará el resultado ordenado por clave, es decir; llave1, 2 y 3 respectivamente:

Pero si lo que queremos es ordenar por el valor entonces debemos organizar nuestro código así:

dic = {'llave1':20, 'llave3':3, 'llave2':233}
lista = list()
 
for x,y in dic.items():
   lista.append((y,x))
 
lista = sorted(lista, reverse=False)
 
for x,y in lista:
   print(x,y)

Y obtendremos un resultado como este:

En caso de querer ordenar de mayor a menor solo bastaría con cambiar reverse=False por reverse=True

Separando palabras

En python contamos con la cláusula len que nos permite medir la longitud de un objeto (string, tuplas, listas, rangos…).

En este breve ejercicio vamos a tomar una palabra y la vamos a listar letra a letra, primero usando el bucle while y luego haciendo uso de for … in:

palabra = 'Linux'
index = 0
 
while index < len(palabra):
    letra = palabra[index]
    print(letra)
    index = index + 1

Lo que nos dará una salida similar a esta:

Ahora hagamos lo mismo usando el bucle for … in

palabra = 'Linux'
 
for letra in palabra:
    print(letra)

Y revisemos la salida:

Obtenemos el mismo resultado, solo que usando menos líneas de código.

Siempre que el resultado sea el mismo y lo podamos hacer de diferentes maneras, debemos elegir la más simple y la que tenga menos líneas de código.