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))
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))
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