【问题标题】:segmenting elements in a list and find their statistics分割列表中的元素并找到它们的统计信息
【发布时间】:2022-11-11 00:55:41
【问题描述】:
你能帮我吗,我该如何解决这个问题。
给定以下列表,我想找到 ENG 段。 ENG 段是列表中的组 ENG 元素。我也想找到段长度,即段中的单词数。例如:
list1 = ['ENG', 'ENG', 'ENG', 'ENG', 'ENG', 'TSO', 'ENG', 'ENG']
在列表中,我们有两个 ENG 段,即
ENG_segments = [['ENG', 'ENG', 'ENG', 'ENG', 'ENG'],['ENG', 'ENG']]
长度为 3 的 ENG 段:有 3 个或更多单词
length3 = 1
长度为 2 的段:有 2 个单词
length2 = 1
长度为 1 的段:有 1 个单词
length3 = 0
【问题讨论】:
标签:
python
list
nlp
grouping
【解决方案1】:
您可以使用itertools.groupby 来识别组,并使用collections.Counter 来计算各个段长度的出现次数:
>>> from collections import Counter
>>> import itertools as it
>>>
>>> list1 = ['ENG', 'ENG', 'ENG', 'ENG', 'ENG', 'TSO', 'ENG', 'ENG']
>>>
>>> Counter(min(len([*g]), 3) for k,g in it.groupby(list1) if k == 'ENG')
Counter({3: 1, 2: 1})