Python: ordene la lista de diccionarios por el índice de la lista de valores de la clave

Dada la lista de diccionarios, ordene los diccionarios según el valor del índice de Key.

Entrada : [{“Gfg”: [6, 7, 8], “es”: 9, “mejor”: 10},
{“Gfg”: [2, 0, 3], “es”: 11, “mejor ”: 19},
{“Gfg”: [4, 6, 9], “es”: 16, “mejor”: 1}], K = “Gfg”, idx = 0
Salida : [{‘Gfg’: [ 2, 0, 3], ‘es’: 11, ‘mejor’: 19}, {‘Gfg’: [4, 6, 9], ‘es’: 16, ‘mejor’: 1}, {‘Gfg’ : [6, 7, 8], ‘es’: 9, ‘mejor’: 10}]
Explicación : 2<4<6, por lo tanto, el diccionario está ordenado de esa manera por el índice 0 de la clave.

Entrada : [{“Gfg”: [6, 7, 8], “es”: 9, “mejor”: 10},
{“Gfg”: [2, 0, 3], “es”: 11, “mejor ”: 19},
{“Gfg”: [4, 6, 9], “es”: 16, “mejor”: 1}], K = “Gfg”, idx = 1
Salida : [{‘Gfg’: [ 2, 0, 3], ‘es’: 11, ‘mejor’: 19}, {‘Gfg’: [4, 6, 9], ‘es’: 16, ‘mejor’: 1}, {‘Gfg’ : [6, 7, 8], ‘es’: 9, ‘mejor’: 10}]
Explicación : 0<6<7, por lo tanto, el diccionario está ordenado de esa manera por el 1er índice.

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

La combinación de las funciones anteriores se puede utilizar para resolver este problema. En esto, realizamos la ordenación utilizando la lógica ordenada y basada en el índice de la lista que se proporciona en la función lambda.

Python3

# Python3 code to demonstrate working of 
# Sort dictionaries list by Key's Value list index
# Using sorted() + lambda
  
# initializing lists
test_list = [{"Gfg" : [6, 7, 8], "is" : 9, "best" : 10}, 
             {"Gfg" : [2, 0, 3], "is" : 11, "best" : 19},
             {"Gfg" : [4, 6, 9], "is" : 16, "best" : 1}]
  
# printing original list
print("The original list : " + str(test_list))
  
# initializing K 
K = "Gfg"
  
# initializing idx 
idx = 2
  
# using sorted() to perform sort in basis of 1 parameter key and 
# index
res = sorted(test_list, key = lambda ele: ele[K][idx])
      
# printing result 
print("The required sort order : " + str(res))
Producción

La lista original: [{‘Gfg’: [6, 7, 8], ‘es’: 9, ‘mejor’: 10}, {‘Gfg’: [2, 0, 3], ‘es’: 11, ‘mejor’: 19}, {‘Gfg’: [4, 6, 9], ‘es’: 16, ‘mejor’: 1}]
El orden de clasificación requerido: [{‘Gfg’: [2, 0, 3 ], ‘es’: 11, ‘mejor’: 19}, {‘Gfg’: [6, 7, 8], ‘es’: 9, ‘mejor’: 10}, {‘Gfg’: [4, 6 , 9], ‘es’: 16, ‘mejor’: 1}]

Método #2: Usar sorted() + lambda (parámetro adicional en caso de empate)

Esta es una modificación en la clasificación de valores, agregando otro parámetro en caso de empate de valores entre la lista.

Python3

# Python3 code to demonstrate working of 
# Sort dictionaries list by Key's Value list index
# Using sorted() + lambda (Additional parameter in case of tie)
  
# initializing lists
test_list = [{"Gfg" : [6, 7, 9], "is" : 9, "best" : 10}, 
             {"Gfg" : [2, 0, 3], "is" : 11, "best" : 19},
             {"Gfg" : [4, 6, 9], "is" : 16, "best" : 1}]
  
# printing original list
print("The original list : " + str(test_list))
  
# initializing K 
K = "Gfg"
  
# initializing idx 
idx = 2
  
# initializing K2 
K2 = "best"
  
# using sorted() to perform sort in basis of 2 parameter key
# inner is evaluated after the outer key in lambda order
res = sorted(sorted(test_list, key = lambda ele: ele[K2]), key = lambda ele: ele[K][idx])
      
# printing result 
print("The required sort order : " + str(res))
Producción

La lista original: [{‘Gfg’: [6, 7, 9], ‘es’: 9, ‘mejor’: 10}, {‘Gfg’: [2, 0, 3], ‘es’: 11, ‘mejor’: 19}, {‘Gfg’: [4, 6, 9], ‘es’: 16, ‘mejor’: 1}]
El orden de clasificación requerido: [{‘Gfg’: [2, 0, 3 ], ‘es’: 11, ‘mejor’: 19}, {‘Gfg’: [4, 6, 9], ‘es’: 16, ‘mejor’: 1}, {‘Gfg’: [6, 7 , 9], ‘es’: 9, ‘mejor’: 10}]

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 *