Python | Seleccionar diccionario con clave de condición dada mayor que k

En Python, a veces necesitamos obtener solo una parte del diccionario necesario para resolver el problema. Este problema es bastante común en el desarrollo web y requerimos obtener solo el diccionario selectivo que satisfaga algunos criterios dados. Analicemos ciertas formas en que se puede resolver este problema.

Método #1: Usar la comprensión de listas

# Python3 code to demonstrate
# filtering of a list of dictionary
# on basis of condition
  
# initialising list of dictionary
ini_list = [{'a':1, 'b':3, 'c':7}, {'a':3, 'b':8, 'c':17},
            {'a':78, 'b':12, 'c':13}, {'a':2, 'b':2, 'c':2}]
  
# printing initial list of dictionary
print ("initial_list", str(ini_list))
  
# code to filter list
# where c is greater than 10
res = [d for d in ini_list if d['c'] > 10]
  
# printing result
print ("resultant_list", str(res))

Producción:

lista_inicial [{‘c’: 7, ‘b’: 3, ‘a’: 1}, {‘c’: 17, ‘b’: 8, ‘a’: 3}, {‘c’: 13, ‘ b’: 12, ‘a’: 78}, {‘c’: 2, ‘b’: 2, ‘a’: 2}]
lista_resultante [{‘c’: 17, ‘b’: 8, ‘a’ : 3}, {‘c’: 13, ‘b’: 12, ‘a’: 78}]

 
Método #2: Usando lambda y filtro

# Python3 code to demonstrate
# filtering of list of dictionary
# on basis of condition
  
# initialising list of dictionary
ini_list = [{'a':1, 'b':3, 'c':7}, {'a':3, 'b':8, 'c':17},
            {'a':78, 'b':12, 'c':13}, {'a':2, 'b':2, 'c':2}]
  
# printing initial list of dictionary
print ("initial_list", str(ini_list))
  
# code to filter list
# where c is less than 10
res = list(filter(lambda x:x["c"] > 10, ini_list ))
  
# printing result
print ("resultant_list", str(res))

Producción:

lista_inicial [{‘b’: 3, ‘c’: 7, ‘a’: 1}, {‘b’: 8, ‘c’: 17, ‘a’: 3}, {‘b’: 12, ‘ c’: 13, ‘a’: 78}, {‘b’: 2, ‘c’: 2, ‘a’: 2}]
lista_resultante [{‘c’: 17, ‘b’: 8, ‘a’ : 3}, {‘c’: 13, ‘b’: 12, ‘a’: 78}]

 
Método n.º 3: usar la comprensión de dictados y la comprensión de listas

# Python3 code to demonstrate
# filtering of list of dictionary
# on basis of condition
  
# initialising list of dictionary
ini_list = [{'a':1, 'b':3, 'c':7}, {'a':3, 'b':8, 'c':17},
            {'a':78, 'b':12, 'c':13}, {'a':2, 'b':2, 'c':10}]
                  
# printing initial list of dictionary
print ("initial_list", str(ini_list))
  
# code to filter list
# where c is more than 10
  
res = [{ k:v for (k, v) in i.items()} 
        for i in ini_list if i.get('c') > 10]
  
# printing result
print ("resultant_list", str(res))

Producción:

lista_inicial [{‘a’: 1, ‘c’: 7, ‘b’: 3}, {‘a’: 3, ‘c’: 17, ‘b’: 8}, {‘a’: 78, ‘ c’: 13, ‘b’: 12}, {‘a’: 2, ‘c’: 10, ‘b’: 2}]
lista_resultante [{‘a’: 3, ‘c’: 17, ‘b’ : 8}, {‘a’: 78, ‘c’: 13, ‘b’: 12}]

Publicación traducida automáticamente

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