📜  Python|将重复项合并到列表列表

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

Python|将重复项合并到列表列表

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

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

# Python3 code to demonstrate
# grouping like elements as list 
# using collections.Counter()
import collections
  
# initializing list 
test_list = [1, 3, 4, 2, 1, 3, 4, 2, 3, 4, 1]
  
# printing original list 
print("The original list : " + str(test_list))
  
# using collections.Counter()
# grouping like elements as list 
temp = collections.Counter(test_list)
res = [[i] * j for i, j in temp.items()]
  
# print result
print("The elements after grouping are : " + str(res))
输出 :
The original list : [1, 3, 4, 2, 1, 3, 4, 2, 3, 4, 1]
The elements after grouping are : [[1, 1, 1], [2, 2], [3, 3, 3], [4, 4, 4]]

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

# Python3 code to demonstrate
# grouping like elements as list 
# using itertools.groupby()
import itertools
  
# initializing list 
test_list = [1, 3, 4, 2, 1, 3, 4, 2, 3, 4, 1]
  
# printing original list 
print("The original list : " + str(test_list))
  
# using itertools.groupby()
# grouping like elements as list 
res = [list(i) for j, i in itertools.groupby(sorted(test_list))]
  
# print result
print("The elements after grouping are : " + str(res))
输出 :
The original list : [1, 3, 4, 2, 1, 3, 4, 2, 3, 4, 1]
The elements after grouping are : [[1, 1, 1], [2, 2], [3, 3, 3], [4, 4, 4]]