Python|列表元素的频率分组
有时,在使用列表时,我们可能会遇到一个问题,我们需要以元组列表的形式对元素及其频率进行分组。让我们讨论可以执行此任务的某些方式。
方法#1:使用循环
这是执行此特定任务的蛮力方法。在此,我们迭代每个元素,检查其他列表是否存在,如果存在,则增加它的计数并放入元组。
# Python3 code to demonstrate working of
# Frequency grouping of list elements
# using loop
# initialize list
test_list = [1, 3, 3, 1, 4, 4]
# printing original list
print("The original list : " + str(test_list))
# Frequency grouping of list elements
# using loop
res = []
temp = dict()
for ele in test_list:
if ele in temp:
temp[ele] = temp[ele] + 1
else :
temp[ele] = 1
for key in temp:
res.append((key, temp[key]))
# printing result
print("Frequency of list elements : " + str(res))
输出 :
The original list : [1, 3, 3, 1, 4, 4]
Frequency of list elements : [(1, 2), (3, 2), (4, 2)]
方法 #2:使用Counter() + items()
两种功能的组合可用于执行此任务。它们使用内置结构执行此任务,并且是执行此任务的简写。
# Python3 code to demonstrate working of
# Frequency grouping of list elements
# using Counter() + items()
from collections import Counter
# initialize list
test_list = [1, 3, 3, 1, 4, 4]
# printing original list
print("The original list : " + str(test_list))
# Frequency grouping of list elements
# using Counter() + items()
res = list(Counter(test_list).items())
# printing result
print("Frequency of list elements : " + str(res))
输出 :
The original list : [1, 3, 3, 1, 4, 4]
Frequency of list elements : [(1, 2), (3, 2), (4, 2)]