Python |基于频率分组列表元素
原文:https://www . geesforgeks . org/python-group-list-elements-based-on-frequency/
给定一个元素列表,编写一个 Python 程序,将列表元素及其在元组中的频率分组。
示例:
Input : [1, 3, 4, 4, 1, 5, 3, 1]
Output : [(1, 3), (3, 2), (4, 2), (5, 1)]
Input : ['x', 'a', 'x', 'y', 'a', 'x']
Output : [('x', 3), ('a', 2), ('y', 1)]
方法#1 : 列表理解
我们可以使用列表理解来形成每个元素的元组及其出现次数,并将其存储在“res”中,但这将包含重复的第一个元素。因此,要删除重复的第一个元素,我们使用OrderedDict(res).items()
。
# Python3 program to Grouping list
# elements based on frequency
from collections import OrderedDict
def group_list(lst):
res = [(el, lst.count(el)) for el in lst]
return list(OrderedDict(res).items())
# Driver code
lst = [1, 3, 4, 4, 1, 5, 3, 1]
print(group_list(lst))
Output:
[(1, 3), (3, 2), (4, 2), (5, 1)]
方法 2 : 使用collections.Counter()
collections.Counter()
提供两种直接方法keys()
和values()
提供元素及其出现。最后,使用 Python zip()
方法将它们压缩在一起。
# Python3 program to Grouping list
# elements based on frequency
from collections import Counter
def group_list(lst):
return list(zip(Counter(lst).keys(), Counter(lst).values()))
# Driver code
lst = [1, 3, 4, 4, 1, 5, 3, 1]
print(group_list(lst))
Output:
[(1, 3), (3, 2), (4, 2), (5, 1)]
版权属于:月萌API www.moonapi.com,转载请注明出处