Diferentes formas de ordenar Diccionario por claves y Ordenación inversa por claves

Prerrequisito: Diccionarios en Python

Un diccionario es una colección desordenada, modificable e indexada. En Python, los diccionarios se escriben con corchetes y tienen claves y valores. Podemos acceder a los valores del diccionario usando claves. En este artículo, discutiremos 10 formas diferentes de ordenar el diccionario de Python por claves y también ordenar de manera inversa por claves.

Usando sorted() y keys():

El método keys() devuelve un objeto de vista que muestra una lista de todas las claves del diccionario. sorted() se usa para ordenar las claves del diccionario.

Ejemplos:

Input:
my_dict = {'c':3, 'a':1, 'd':4, 'b':2}

Output:
a: 1
b: 2
c: 3
d: 4

Python3

# Initialising a dictionary
my_dict = {'c':3, 'a':1, 'd':4, 'b':2}
  
# Sorting dictionary
sorted_dict = my_dict.keys()
sorted_dict = sorted(sorted_dict)
  
# Printing sorted dictionary
print("Sorted dictionary using sorted() and keys() is : ")
for key in sorted_dict:
    print(key,':', my_dict[key])
Producción

Sorted dictionary using sorted() and keys() is : 
a : 1
b : 2
c : 3
d : 4

Usando sorted() y items():

El método items() se usa para devolver la lista con todas las claves del diccionario con valores. Devuelve un objeto de vista que muestra una lista del par de tuplas (clave, valor) de un diccionario determinado. sorted() se usa para ordenar las claves del diccionario.

Ejemplos:

Input:
my_dict = {2:'three', 1:'two', 4:'five', 3:'four'}

Output:
1  'two'
2  'three'
3  'Four'
4  'Five'

Python3

# Initialising dictionary
my_dict = {2: 'three', 1: 'two', 4: 'five', 3: 'four'}
  
# Sorting dictionary
sorted_dict = sorted(my_dict.items())
  
# Printing sorted dictionary
print("Sorted dictionary using sorted() and items() is :")
for k, v in sorted_dict:
    print(k, v)
Producción

Sorted dictionary using sorted() and items() is :
1 two
2 three
3 four
4 five

Usando sorted() y keys() en una sola línea:

Aquí, usamos sorted() y keys() en una sola línea.

Ejemplos:

Input:
my_dict = {'c':3, 'a':1, 'd':4, 'b':2}

Output:
Sorted dictionary is :  ['a','b','c','d']

Python3

# Initialising a dictionary
my_dict = {'c': 3, 'a': 1, 'd': 4, 'b': 2}
# Sorting dictionary
sorted_dict = sorted(my_dict.keys())
  
# Printing sorted dictionary
print("Sorted dictionary is : ", sorted_dict)
Producción

Sorted dictionary is :  ['a', 'b', 'c', 'd']

Usando sorted() y items() en una sola línea

Aquí, usamos sorted() y items() en una sola línea.

Ejemplos:

Input:
my_dict = {'red':'#FF0000', 'green':'#008000', 'black':'#000000', 'white':'#FFFFFF'}

Output:
Sorted dictionary is : 
black  :: #000000
green  :: #008000
red  :: #FF0000
white  :: #FFFFFF

Python3

# Initialising a dictionary
my_dict = {'red': '#FF0000', 'green': '#008000',
           'black': '#000000', 'white': '#FFFFFF'}
  
# Sorting dictionary in one line
sorted_dict = dict(sorted(my_dict .items()))
  
# Printing sorted dictionary
print("Sorted dictionary is : ")
for elem in sorted(sorted_dict.items()):
    print(elem[0], " ::", elem[1])
Producción

Sorted dictionary is : 
black ::#000000
green ::#008000
red ::#FF0000
white ::#FFFFFF

Usando una función lambda 

La función lambda devuelve la clave (elemento 0) para una tupla de elemento específica. Cuando se pasan al método sorted(), devuelve una secuencia ordenada que luego se convierte en tipo en un diccionario.

Ejemplos:

Input:
my_dict = {'a': 23, 'g': 67, 'e': 12, 45: 90}

Output:
Sorted dictionary using lambda is :  {'e': 12, 'a': 23, 'g': 67, 45: 90}

Python3

# Initialising a dictionary
my_dict = {'a': 23, 'g': 67, 'e': 12, 45: 90}
  
# Sorting dictionary using lambda function
sorted_dict = dict(sorted(my_dict.items(), key=lambda x: x[1]))
  
# Printing sorted dictionary
print("Sorted dictionary using lambda is : ", sorted_dict)
Producción

Sorted dictionary using lambda is :  {'e': 12, 'a': 23, 'g': 67, 45: 90}

6. Usando json:

Python no permite clasificar un diccionario. Pero al convertir el diccionario a un JSON, puede ordenarlo explícitamente para que el JSON resultante se ordene por claves. Esto es cierto para el diccionario multidimensional.

Ejemplos:

Input:
my_dict = {"b": 2, "c": 3, "a": 1,"d":4}

Output:
Sorted dictionary is :  {"a": 1, "b": 2, "c": 3,"d":4}

Python3

# Importing json
import json
  
# Initialising a dictionary
my_dict = {"b": 2, "c": 3, "a": 1,"d":4}
  
# Sorting and printind in a single line
print("Sorted dictionary is : ", json.dumps(my_dict, sort_keys=True))
Producción

Sorted dictionary is :  {"a": 1, "b": 2, "c": 3, "d": 4}

Usando pprint 

El módulo pprint de Python en realidad ya ordena los diccionarios por clave. El módulo pprint proporciona la capacidad de «imprimir de forma bonita» estructuras de datos arbitrarias de Python en un formulario que se puede usar como entrada para el intérprete.

Ejemplos:

Input:
my_dict = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}

Output:
Sorted dictionary is :
{0: 0, 1: 2, 2: 1, 3: 4, 4: 3}

Python3

# Importing pprint
import pprint
  
# Initialising a dictionary
my_dict = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
  
# Sorting and printing in a single line
print("Sorted dictionary is :")
pprint.pprint(my_dict)

Uso de colecciones y OrderedDict 

OrderedDict es una clase de biblioteca estándar, que se encuentra en el módulo de colecciones. OrderedDict mantiene las órdenes de las claves tal como se insertan.

Ejemplos:

Input:
my_dict = {"b": 2, "c": 3, "a": 1,"d":4}1}

Output:
OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 4)])

Python

# Importing OrderedDict
from collections import OrderedDict
  
# Initialising a dictionary
my_dict = {"b": 2, "c": 3, "a": 1,"d":4}
  
# Sorting dictionary
sorted_dict = OrderedDict(sorted(my_dict.items()))
  
# Printing sorted dictionary
print(sorted_dict)
Producción

OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 4)])

Usando sortedcontainers y SortedDict :

El dictado ordenado es una asignación mutable ordenada en la que las claves se mantienen ordenadas. El dictado ordenado es un mapeo mutable ordenado. El dict ordenado hereda de dict para almacenar elementos y mantiene una lista ordenada de claves. Para esto, necesitamos instalar sortedcontainers.

sudo pip install sortedcontainers 

Ejemplos:

Input:
my_dict = {"b": 2, "c": 3, "a": 1,"d":4}

Output:
{"a": 1, "b": 2, "c": 3,"d":4}

Python3

# Importing SortedDict
from sortedcontainers import SortedDict
  
# Initialising a dictionary
my_dict = {"b": 2, "c": 3, "a": 1,"d":4}
  
# Sorting dictionary
sorted_dict = SortedDict(my_dict)
  
# Printing sorted dictionary
print(sorted_dict)

Producción:

SortedDict({'a': 1, 'b': 2, 'c': 3, 'd': 4})

Usando clase y función

Ejemplos:

Input:
{"b": 2, "c": 3, "a": 1,"d":4}

Output:
{"a": 1, "b": 2, "c": 3,"d":4}

Python3

class SortedDisplayDict(dict):
    def __str__(self):
        return "{" + ", ".join("%r: %r" % (key, self[key]) for key in sorted(self)) + "}"
  
  
# Initialising dictionary and calling class
my_dict = SortedDisplayDict({"b": 2, "c": 3, "a": 1,"d":4})
  
# Printing dictionary
print(my_dict)
Producción

{'a': 1, 'b': 2, 'c': 3, 'd': 4}

Diccionario de clasificación inversa por claves

Ejemplos:

Input:
my_dict = {"b": 2, "c": 3, "a": 1,"d":4}

Output:
Sorted dictionary is :
['a','b','c','d']

Python3

# Initialising a dictionary
my_dict = {"b": 2, "c": 3, "a": 1,"d":4}
  
# Reverse sorting a dictionary
sorted_dict = sorted(my_dict, reverse=True)
  
# Printing dictionary
print("Sorted dictionary is :")
  
for k in sorted_dict:
  print(k,':',my_dict[k])
Producción

Sorted dictionary is :
d : 4
c : 3
b : 2
a : 1

Publicación traducida automáticamente

Artículo escrito por venniladeenan 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 *