计算元组的出现次数

时间:2016-09-20 01:30:40

标签: python tuples

我有一个(标记,标记)元组列表,如下所示:

 token_tags =  
 [('book', 'noun'),
 ('run', 'noun'),
 (',', ','),
 ('book', 'verb'),
 ('run', 'adj'),
 ('run', 'verb')]

我试图找出令牌首次被标记为'名词'然后作为一个动词'在列表中的下列外观中。所以,我不应该算“跑步”。因为它被标记为其名词'之间的形容词。和'动词'分配。有关如何做到这一点的任何建议吗?

我已将元组转换为dict,如下所示

d = {}
for x, y in token_tags:
d.setdefault(x, []).append(y)

所以,现在d包含:

 {'book': ['noun', 'verb'], 'run': ['noun', 'adj', 'verb'], ',': [',']}

我已经尝试过常规表达来解决这个问题,但没有奏效。

1 个答案:

答案 0 :(得分:0)

现在你已经把它放在一本字典中,计算一对出现的时间很简单,想法是在列表中取两个连续元素并检查它们是否是欲望对,例如

>>> data = {'book': ['noun', 'verb'], 'run': ['noun', 'adj', 'verb'], ',': [',']}
>>> result={}
>>> for token, tag_list in data.items():
        count = 0
        for i in range(1,len(tag_list)):
            if tag_list[i-1]=="noun" and tag_list[i]=="verb":
                count = count + 1
        result[token] = count

>>> result
{',': 0, 'book': 1, 'run': 0}
>>>