Python统计列表中元组出现的次数

2024-06-16 12:08:54 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有办法计算每个元组在这个标记列表中出现的次数?在

我尝试过count方法,但它不起作用。在

列表如下:

['hello', 'how', 'are', 'you', 'doing', 'today', 'are', 'you', 'okay']

以下是基于列表的元组:

^{pr2}$

我希望结果是这样的

('hello', 'how')1
('how', 'are')1
('are','you')2
('you', 'doing')1
('doing', 'today')1
('today', 'are')1
('you', 'okay')1

Tags: 方法标记youhello列表todaycount次数
2条回答

您可以很容易地使用Counter来实现这一点。计数n克的通用函数如下:

from collections import Counterfrom itertools import islice

def count_ngrams(iterable,n=2):
    return Counter(zip(*[islice(iterable,i,None) for i in range(n)]))

这将产生:

^{pr2}$

此解决方案需要第三方模块(^{}),但应该执行您想要的操作:

>>> from iteration_utilities import Iterable

>>> l = ['hello', 'how', 'are', 'you', 'doing', 'today', 'are', 'you', 'okay']

>>> Iterable(l).successive(2).as_counter()
Counter({('are', 'you'): 2,
         ('doing', 'today'): 1,
         ('hello', 'how'): 1,
         ('how', 'are'): 1,
         ('today', 'are'): 1,
         ('you', 'doing'): 1,
         ('you', 'okay'): 1})

相关问题 更多 >