Python – Ordenar diccionario ignorando clave

A veces, mientras trabajamos con diccionarios de Python, podemos tener problemas en los que necesitamos realizar la clasificación de los elementos del diccionario. Esto es bastante sencillo, pero a veces, podemos tener ciertas claves perdidas, que no deseamos alterar el orden mientras clasificamos. Esto funciona para Python> = 3.6 ya que las claves se ordenan en el diccionario de esta versión en adelante. Esto puede tener aplicaciones en dominios de datos. Analicemos una forma en que se puede realizar esta tarea.

Entrada : test_dict = {“*-*”: “extraviado”, 70: ‘es’}
Salida : {“*-*”: “extraviado”, 70: ‘es’}

Entrada : test_dict = {54: «gfg», «*-*»: «stray», 20: ‘best’}
Salida : {20: ‘best’, ‘*-*’: ‘stray’, 54: ‘gfg ‘}

Método:next() + sorted() + insert()
El uso de la combinación de los métodos anteriores se puede utilizar para resolver este problema. En esto, realizamos la clasificación usando sorted(), insert() se usa para insertar el elemento perdido en su posición y next() se usa para obtener la siguiente clave en orden en el caso de la clave perdida inicial.

# Python3 code to demonstrate working of 
# Sort Dictionary ignoring Key
# Using next() + sorted() + insert()
  
# initializing dictionary
test_dict = {45 : 'is', 12 : 'gfg', 100 : 'best', 
             "*-*" : "stray", 150 : 'geeks', 120 : 'for'}
  
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
  
# strary key 
stray_key = '*-*'
  
# Sort Dictionary ignoring Key
# Using next() + sorted() + insert()
temp = next(idx for idx, val in enumerate(test_dict) if val == stray_key)
idx = sorted(ele for ele in test_dict if ele != stray_key)
idx.insert(temp, stray_key)
res = {ele: test_dict[ele] for ele in idx}
  
# printing result 
print("The dictionary after sorting : " + str(res)) 
Producción :

El diccionario original es: {45: ‘is’, 12: ‘gfg’, 100: ‘best’, ‘*-*’: ‘stray’, 150: ‘geeks’, 120: ‘for’}

El diccionario después de ordenar: {12: ‘gfg’, 45: ‘is’, 100: ‘best’, ‘*-*’: ‘stray’, 120: ‘for’, 150: ‘geeks’}

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 *