📜  Python|相同的字符串分组

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

Python|相同的字符串分组

有时,我们需要执行常规任务,将一些类似字符串分组到一个单独的列表中,从而形成一个列表列表。这也有助于计数并获得元素的排序顺序。让我们讨论一些可以做到这一点的方法。

方法 #1:使用collections.Counter()
这个特殊的函数可以证明对于执行这个特殊的任务非常有用,因为它计算了字符串在列表中的频率,然后我们可以使用列表推导对它们进行配对。

# Python3 code to demonstrate
# Identical Strings Grouping 
# using collections.Counter()
import collections
  
# initializing list 
test_list = ["Gfg", "best", "is", "Gfg", "is", "best", "Gfg", "best"]
  
# printing original list 
print("The original list : " + str(test_list))
  
# using collections.Counter()
# Identical Strings Grouping
temp = collections.Counter(test_list)
res = [[i] * j for i, j in temp.items()]
  
# print result
print("The Strings after grouping are : " + str(res))
输出 :
The original list : ['Gfg', 'best', 'is', 'Gfg', 'is', 'best', 'Gfg', 'best']
The Strings after grouping are : [['best', 'best', 'best'], ['Gfg', 'Gfg', 'Gfg'], ['is', 'is']]

方法#2:使用itertools.groupby()
这个问题可以通过Python通过 groupby 函数提供的传统 groupby 功能轻松解决,该功能按名称建议对类似元素进行分组。

# Python3 code to demonstrate
# Identical Strings Grouping
# using itertools.groupby()
import itertools
  
# initializing list 
test_list = ["Gfg", "best", "is", "Gfg", "is", "best", "Gfg", "best"]
  
# printing original list 
print("The original list : " + str(test_list))
  
# using itertools.groupby()
# Identical Strings Grouping
res = [list(i) for j, i in itertools.groupby(sorted(test_list))]
  
# print result
print("The Strings after grouping are : " + str(res))
输出 :
The original list : ['Gfg', 'best', 'is', 'Gfg', 'is', 'best', 'Gfg', 'best']
The Strings after grouping are : [['best', 'best', 'best'], ['Gfg', 'Gfg', 'Gfg'], ['is', 'is']]