Python: extrae diccionarios con valores que suman más de K

Dada una lista de diccionarios, extraiga todos los diccionarios cuya suma de claves exceda K.

Entrada : test_list = [{«Gfg»: 4, «es»: 8, «mejor»: 9}, {«Gfg»: 3, «es»: 7, «mejor»: 5}], K = 15
Salida : [{‘Gfg’: 4, ‘is’: 8, ‘best’: 9}]
Explicación : 4 + 9 + 8 = 21. Mayor que K, por lo tanto devuelto.

Entrada : test_list = [{«Gfg»: 4, «es»: 8, «mejor»: 9}, {«Gfg»: 3, «es»: 7, «mejor»: 5}], K = 25
Salida : []
Explicación : No hay diccionario con suma > 25.

Método #1: Usar bucle

Esta es la forma bruta en la que se puede realizar esta tarea. En esto, iteramos para todos los diccionarios y extraemos la suma de cada uno de ellos, que excede K, los filtramos.

Python3

# Python3 code to demonstrate working of 
# Extract dictionaries with values sum greater than K
# Using 
  
# initializing lists
test_list = [{"Gfg" : 4, "is" : 8, "best" : 9},
             {"Gfg" : 5, "is": 8, "best" : 1},
             {"Gfg" : 3, "is": 7, "best" : 6}, 
             {"Gfg" : 3, "is": 7, "best" : 5}]
  
# printing original list
print("The original list : " + str(test_list))
  
# initializing K 
K = 15
  
# using loop to extract all dictionaries
res = []
for sub in test_list:
    sum = 0
    for key in sub:
        sum += sub[key]
    if sum > K:
        res.append(sub)
  
# printing result 
print("Dictionaries with summation greater than K : " + str(res))
Producción

The original list : [{'Gfg': 4, 'is': 8, 'best': 9}, {'Gfg': 5, 'is': 8, 'best': 1}, {'Gfg': 3, 'is': 7, 'best': 6}, {'Gfg': 3, 'is': 7, 'best': 5}]
Dictionaries with summation greater than K : [{'Gfg': 4, 'is': 8, 'best': 9}, {'Gfg': 3, 'is': 7, 'best': 6}]

Método n.° 2: usar la comprensión de listas + sum()

Esta es una forma lineal en la que se puede realizar esta tarea. En esto, realizamos la tarea de suma usando sum() y la comprensión de listas se puede usar para realizar la tarea de combinar toda la lógica en una sola línea.

Python3

# Python3 code to demonstrate working of 
# Extract dictionaries with values sum greater than K
# Using list comprehension + sum()
  
# initializing lists
test_list = [{"Gfg" : 4, "is" : 8, "best" : 9},
             {"Gfg" : 5, "is": 8, "best" : 1},
             {"Gfg" : 3, "is": 7, "best" : 6}, 
             {"Gfg" : 3, "is": 7, "best" : 5}]
  
# printing original list
print("The original list : " + str(test_list))
  
# initializing K 
K = 15
  
# using one-liner to extract all the dictionaries
res = [sub for sub in test_list if sum(list(sub.values())) > K]
  
# printing result 
print("Dictionaries with summation greater than K : " + str(res))
Producción

The original list : [{'Gfg': 4, 'is': 8, 'best': 9}, {'Gfg': 5, 'is': 8, 'best': 1}, {'Gfg': 3, 'is': 7, 'best': 6}, {'Gfg': 3, 'is': 7, 'best': 5}]
Dictionaries with summation greater than K : [{'Gfg': 4, 'is': 8, 'best': 9}, {'Gfg': 3, 'is': 7, 'best': 6}]

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 *