Dada uma lista de dicionários, extraia todos os dicionários cuja soma de chaves exceda K.

Entrada : test_list = [{“Gfg”: 4, “é”: 8, “melhor”: 9}, {“Gfg”: 3, “é”: 7, “melhor”: 5}], K = 15
Saída : [{'Gfg': 4, 'é': 8, 'melhor': 9}]
Explicação : 4 + 9 + 8 = 21. Maior que K, portanto, retornado.

Entrada : test_list = [{“Gfg”: 4, “é”: 8, “melhor”: 9}, {“Gfg”: 3, “é”: 7, “melhor”: 5}], K = 25
Saída : []
Explicação : Nenhum dicionário com soma> 25.

Método # 1: usando loop

Esta é a maneira bruta pela qual essa tarefa pode ser realizada. Neste, iteramos para todos os dicionários e extraímos o somatório de cada um deles, que excede K, os filtramos.



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}] 
print("The original list : " + str(test_list)) 
K = 15
res = [] 
for sub in test_list: 
    sum = 0
    for key in sub: 
        sum += sub[key] 
    if sum > K: 
        res.append(sub) 
print("Dictionaries with summation greater than K : " + str(res)) 
Resultado
A lista original: [{'Gfg': 4, 'é': 8, 'melhor': 9}, {'Gfg': 5, 'é': 8, 'melhor': 1}, {'Gfg': 3, 'é': 7, 'melhor': 6}, {'Gfg': 3, 'é': 7, 'melhor': 5}]
Dicionários com soma maior que K: [{'Gfg': 4, 'é': 8, 'melhor': 9}, {'Gfg': 3, 'é': 7, 'melhor': 6}]

Método 2: usando a compreensão da lista + sum()

Esta é uma maneira linear pela qual essa tarefa pode ser executada. Neste, realizamos a tarefa de soma usando sum() e a compreensão de lista pode ser usada para realizar a tarefa de combinar toda a lógica em uma única linha.

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}] 
print("The original list : " + str(test_list)) 
K = 15
res = [sub for sub in test_list if sum(list(sub.values())) > K] 
print("Dictionaries with summation greater than K : " + str(res)) 
Resultado
A lista original: [{'Gfg': 4, 'é': 8, 'melhor': 9}, {'Gfg': 5, 'é': 8, 'melhor': 1}, {'Gfg': 3, 'é': 7, 'melhor': 6}, {'Gfg': 3, 'é': 7, 'melhor': 5}]
Dicionários com soma maior que K: [{'Gfg': 4, 'é': 8, 'melhor': 9}, {'Gfg': 3, 'é': 7, 'melhor': 6}]