Python: ordene la lista de diccionarios de un solo elemento según el orden personalizado

Dada la lista de diccionarios de un solo elemento y la lista de orden de claves, realice una clasificación de diccionario de acuerdo con las claves personalizadas.

Entrada : test_list1 = [{‘is’: 4}, {“Gfg”: 10}, {“Best”: 1}], test_list2 = [“Gfg”, “is”, “Best”]
Salida : [{‘ Gfg’: 10}, {‘is’: 4}, {‘Best’: 1}]
Explicación : por orden de lista, la lista de diccionarios se ordena.

Entrada : test_list1 = [{“Gfg”: 10}, {‘is’: 4}, {“Best”: 1}], test_list2 = [“Gfg”, “is”, “Best”]
Salida : [{‘ Gfg’: 10}, {‘is’: 4}, {‘Best’: 1}]
Explicación : ya se ordenó. No se requiere reordenar.

Método #1: Usar sorted() + index() + keys() + lambda 

La combinación de las funcionalidades anteriores se puede utilizar para resolver este problema. En esto, realizamos la ordenación usando sorted(), index() se usa para ordenar de la lista personalizada, keys() se usa para extraer las claves del diccionario.

Python3

# Python3 code to demonstrate working of 
# Sort list of Single Item dictionaries according to custom ordering
# Using sorted() + index() + keys() + lambda 
  
# initializing lists
test_list1 = [{'is' : 4}, {'for' : 7}, {"Gfg" : 10}, {"Best" : 1}, {"CS" : 8}] 
test_list2 = ["Gfg", "is", "Best", "for", "CS"]
  
# printing original lists
print("The original list 1 is : " + str(test_list1))
print("The original list 2 is : " + str(test_list2))
  
# sorted() used to perform sort(), returns the result
# to other variable, ordering handled using index() from order list
res = sorted(test_list1, key = lambda ele: test_list2.index(list(ele.keys())[0]))
  
# printing result 
print("The custom order list : " + str(res)) 
Producción

La lista original 1 es: [{‘is’: 4}, {‘for’: 7}, {‘Gfg’: 10}, {‘Best’: 1}, {‘CS’: 8}]
La lista original 2 es: [‘Gfg’, ‘is’, ‘Best’, ‘for’, ‘CS’]
La lista de pedidos personalizados: [{‘Gfg’: 10}, {‘is’: 4}, {‘Best’ : 1}, {‘para’: 7}, {‘CS’: 8}]

Método #2: Usar sort() + index() + keys() + lambda

Esta es otra forma más en la que se puede realizar esta tarea. En esto, realizamos la tarea de ordenar usando sort(), realiza la ordenación en el lugar, otras construcciones permanecen igual.

Python3

# Python3 code to demonstrate working of 
# Sort list of Single Item dictionaries according to custom ordering
# Using sort() + index() + keys() + lambda
  
# initializing lists
test_list1 = [{'is' : 4}, {'for' : 7}, {"Gfg" : 10}, {"Best" : 1}, {"CS" : 8}] 
test_list2 = ["Gfg", "is", "Best", "for", "CS"]
  
# printing original lists
print("The original list 1 is : " + str(test_list1))
print("The original list 2 is : " + str(test_list2))
  
# sort() used to perform inplace sort
test_list1.sort(key = lambda ele: test_list2.index(list(ele.keys())[0]))
  
# printing result 
print("The custom order list : " + str(test_list1)) 
Producción

La lista original 1 es: [{‘is’: 4}, {‘for’: 7}, {‘Gfg’: 10}, {‘Best’: 1}, {‘CS’: 8}]
La lista original 2 es: [‘Gfg’, ‘is’, ‘Best’, ‘for’, ‘CS’]
La lista de pedidos personalizados: [{‘Gfg’: 10}, {‘is’: 4}, {‘Best’ : 1}, {‘para’: 7}, {‘CS’: 8}]

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 *