Às vezes, ao trabalhar com tuplas Python, podemos ter um problema em que precisamos extrair a frequência de cada valor na tupla. Isso foi resolvido anteriormente. Podemos ter uma modificação na qual precisamos criar uma lista em que o índice representa a chave e o valor dela representa a frequência desse número de índice. Este tipo de problema pode ter aplicações no domínio competitivo de programação. Vamos discutir algumas maneiras pelas quais precisamos resolver esse problema.

Entrada : test_list = [('Gfg', 1), ('é', 1), ('melhor', 1), ('para', 1), ('geeks', 1)]
Saída : [0, 5, 0, 0, 0, 0]

Entrada : test_list = [('Gfg', 5), ('é', 5)]
Saída : [0, 0, 0, 0, 0, 2]

Método # 1: usando loop
Esta é a abordagem de força bruta pela qual esta tarefa pode ser executada. Neste, realizamos a tarefa de atribuir frequência, iterando e atribuindo lista pré-inicializada.

test_list = [('Gfg', 3), ('is', 3), ('best', 1), ('for', 5), ('geeks', 1)] 
print("The original list is : " + str(test_list)) 
res = [0 for _ in range(6)] 
for ele in test_list: 
    res[ele[1]] = res[ele[1]] + 1
print("The Frequency list : " + str(res))  
Resultado :

A lista original é: [('Gfg', 3), ('é', 3), ('melhor', 1), ('para', 5), ('geeks', 1)]
A lista de frequência: [0, 2, 0, 2, 0, 1]

 

Método # 2: Usando Counter()+ compreensão de lista
A combinação das funcionalidades acima é usada para resolver este problema. Neste, realizamos a tarefa de calcular frequências usando Counter() e a renderização em lista é feita por compreensão de lista.

from collections import Counter 
test_list = [('Gfg', 3), ('is', 3), ('best', 1), ('for', 5), ('geeks', 1)] 
print("The original list is : " + str(test_list)) 
cntr = Counter(ele[1] for ele in test_list) 
res = [cntr[idx] for idx in range(6)] 
print("The Frequency list : " + str(res))  
Resultado :
A lista original é: [('Gfg', 3), ('é', 3), ('melhor', 1), ('para', 5), ('geeks', 1)]
A lista de frequência: [0, 2, 0, 2, 0, 1]