Rec*_*ake 2 python grouping list recurring
例如,我们有一个这样的列表:
L = ["item1", "item2", "item3", "item3", "item3", "item1", "item2", "item4", "item4", "item4"]
Run Code Online (Sandbox Code Playgroud)
我想将它们打包到表格的元组列表中:
[("item1", 1), ("item2", 1), ("item3", 3),... ("item1", 1)]
Run Code Online (Sandbox Code Playgroud)
我已经开发了一种类似的算法,以获得:
{item1: 2, item2: 2, ...}
Run Code Online (Sandbox Code Playgroud)
(它找到所有出现并计算它们,即使它们不是邻居......)
但是,我希望它只分组那些具有相同且是邻居的项目(即连续出现在一起),我怎么能完成这个?
这不是我不知道该怎么做但我倾向于编写很长的代码,在这种情况下我想要一个优雅而简单的解决方案.
这也是使用itertools.groupby(生成器版本):
from itertools import groupby
counts = ((k, sum(1 for _ in g)) for k, g in groupby(l))
>>> list(counts)
[('item1', 1),
('item2', 1),
('item3', 3),
('item1', 1),
('item2', 1),
('item4', 3)]
Run Code Online (Sandbox Code Playgroud)