📜  Python – 值频率索引列表

📅  最后修改于: 2022-05-13 01:54:24.267000             🧑  作者: Mango

Python – 值频率索引列表

有时,在使用Python元组时,我们可能会遇到需要提取元组中每个值的频率的问题。这个问题早已经解决了。我们可以进行修改,在其中我们需要创建列表,其中索引表示键,它的值表示该索引号的频率。这种问题可以在竞争性编程领域有应用。让我们讨论一下我们需要解决这个问题的某些方法。

方法#1:使用循环
这是可以执行此任务的蛮力方法。在此,我们通过迭代和分配预初始化列表来执行分配频率的任务。

# Python3 code to demonstrate working of 
# Values Frequency Index List
# Using loop
  
# initializing list
test_list = [('Gfg', 3), ('is', 3), ('best', 1), ('for', 5), ('geeks', 1)]
  
# printing original list
print("The original list is : " + str(test_list))
  
# Values Frequency Index List
# Using loop
res = [0 for _ in range(6)]
for ele in test_list:
    res[ele[1]] = res[ele[1]] + 1
  
# printing result 
print("The Frequency list : " + str(res)) 
输出 :
The original list is : [('Gfg', 3), ('is', 3), ('best', 1), ('for', 5), ('geeks', 1)]
The Frequency list : [0, 2, 0, 2, 0, 1]

方法 #2:使用Counter() + 列表推导
上述功能的组合用于解决这个问题。在此,我们使用 Counter() 执行计算频率的任务,并通过列表理解完成列表中的呈现。

# Python3 code to demonstrate working of 
# Values Frequency Index List
# Using Counter() + list comprehension
from collections import Counter
  
# initializing list
test_list = [('Gfg', 3), ('is', 3), ('best', 1), ('for', 5), ('geeks', 1)]
  
# printing original list
print("The original list is : " + str(test_list))
  
# Values Frequency Index List
# Using Counter() + list comprehension
cntr = Counter(ele[1] for ele in test_list)
res = [cntr[idx] for idx in range(6)]
  
# printing result 
print("The Frequency list : " + str(res)) 
输出 :
The original list is : [('Gfg', 3), ('is', 3), ('best', 1), ('for', 5), ('geeks', 1)]
The Frequency list : [0, 2, 0, 2, 0, 1]