小能豆

如何计算无序列表中元素的频率?

javascript

给定一个无序列表,例如

a = [5, 1, 2, 2, 4, 3, 1, 2, 3, 1, 1, 5, 2]

我怎样才能获得列表中出现的每个值的频率,就像这样?

# `a` has 4 instances of `1`, 4 of `2`, 2 of `3`, 1 of `4,` 2 of `5`
b = [4, 4, 2, 1, 2] # expected output

阅读 42

收藏
2024-06-28

共1个答案

小能豆

要获取无序列表中每个唯一值的频率a,您可以collections.Counter计算

from collections import Counter

a = [

a 
5, 1, 2, 2, 4, 3, 1, 2, 3, 1, 1, 5, 2]

# Count occurrences of each element
count_dict = Counter(a)


count_dict = Count

count_dict 

coun
# Extract frequencies into a list
b = [count_dict[val] 
b = [count_dict[val] fo

b = [count_dict[

b = [coun
for val in sorted(count_dict)]



pri
print(b)  # Output: [4, 4, 2, 1, 2]

前任

  1. 计数器用法Counter(a)创建一个类似字典的对象,其中键是列表中的元素a,值是它们各自的计数。
  2. 排序键sorted(count_dict)对的键进行排序count_dict。此步骤是必需的,因为直接迭代Counter对象可能无法保证元素的顺序。
  3. 列表理解[count_dict[val] for val in sorted(count_dict)]对的排序键进行迭代count_dict并从中检索每个元素的计数count_dict,从而生成一个b包含元素按排序顺序出现的频率的列表。

a这种方法可确保您以有序的方式获取每个唯一值的频率,如预期输出中所指定的那样。

2024-06-28