Ordenar Diccionarios por Clave en Python
Para ordenar un diccionario por sus claves, se puede utilizar la función sorted() directamente sobre el objeto diccionario, lo que devuelve una lista de claves ordenadas. Luego, se itera para mostrar los pares clave-valor.
def organizar_diccionario_clave():
coleccion = {}
coleccion[4] = 89
coleccion[2] = 34
coleccion[7] = 56
coleccion[1] = 12
coleccion[5] = 78
coleccion[3] = 45
print("Resultado de ordenar por clave:")
for clave_ordenada in sorted(coleccion):
print(clave_ordenada, "->", coleccion[clave_ordenada])
organizar_diccionario_clave()
Salida generada por el código anterior:
Resultado de ordenar por clave:
1 -> 12
2 -> 34
3 -> 45
4 -> 89
5 -> 78
7 -> 56
Ordenar Diccionarios por Valor en Python
Para ordenar por valor, se emplea sorted() con el parámetro key utilizando una función lambda que extrae el segundo elemento de cada par clave-valor. Esto permite una clasificación personalizada.
def organizar_diccionario_valor():
datos = {6: 92, 3: 15, 9: 67, 2: 48, 4: 30, 8: 11}
print("Ordenamiento por valor:")
elementos_clasificados = sorted(datos.items(), key=lambda item: item[1])
print(elementos_clasificados)
organizar_diccionario_valor()
Salida esperada:
Ordenamiento por valor:
[(8, 11), (3, 15), (4, 30), (2, 48), (9, 67), (6, 92)]
Ordenar Listas de Diccionarios por Atributos
Al trabajar con listas de diccionarios, se puede ordenar basándose en uno o más campos. Se utiliza una función lambda para definir el criterio de orden, como un campo específico o una tupla de campos para un orden jerárquico.
registros = [{"empresa": "Alpha", "fundacion": 1990, "sede": "Nueva York"},
{"empresa": "Beta", "fundacion": 2005, "sede": "Londres"},
{"empresa": "Gamma", "fundacion": 1990, "sede": "Tokio"},
{"empresa": "Delta", "fundacion": 1985, "sede": "París"}]
# Ordenar únicamente por año de fundación de forma ascendente
print("Orden ascendente por fundacion:")
print(sorted(registros, key=lambda registro: registro["fundacion"]))
# Ordenar por año de fundación y luego por nombre de empresa
print("Orden por fundacion y empresa:")
print(sorted(registros, key=lambda r: (r["fundacion"], r["empresa"])))
# Ordenar por año de fundación de forma descendente
print("Orden descendente por fundacion:")
print(sorted(registros, key=lambda r: r["fundacion"], reverse=True))
Resultados tras la ejecución:
Orden ascendente por fundacion:
[{'empresa': 'Delta', 'fundacion': 1985, 'sede': 'París'}, {'empresa': 'Alpha', 'fundacion': 1990, 'sede': 'Nueva York'}, {'empresa': 'Gamma', 'fundacion': 1990, 'sede': 'Tokio'}, {'empresa': 'Beta', 'fundacion': 2005, 'sede': 'Londres'}]
Orden por fundacion y empresa:
[{'empresa': 'Delta', 'fundacion': 1985, 'sede': 'París'}, {'empresa': 'Alpha', 'fundacion': 1990, 'sede': 'Nueva York'}, {'empresa': 'Gamma', 'fundacion': 1990, 'sede': 'Tokio'}, {'empresa': 'Beta', 'fundacion': 2005, 'sede': 'Londres'}]
Orden descendente por fundacion:
[{'empresa': 'Beta', 'fundacion': 2005, 'sede': 'Londres'}, {'empresa': 'Alpha', 'fundacion': 1990, 'sede': 'Nueva York'}, {'empresa': 'Gamma', 'fundacion': 1990, 'sede': 'Tokio'}, {'empresa': 'Delta', 'fundacion': 1985, 'sede': 'París'}]