访问元素及其在集合中的计数

时间:2016-12-14 08:08:17

标签: python

>>> import collections, re
>>> texts = ['John likes to watch movies. Mary likes too.', 'John also likes to watch football games.']
>>> bagsofwords = [ collections.Counter(re.findall(r'\w+', txt)) for txt in texts]
>>> bagsofwords[0]
Counter({'likes': 2, 'watch': 1, 'Mary': 1, 'movies': 1, 'John': 1, 'to': 1, 'too': 1})
>>> bagsofwords[1]
Counter({'watch': 1, 'games': 1, 'to': 1, 'likes': 1, 'also': 1, 'John': 1, 'football': 1})
>>> sumbags = sum(bagsofwords, collections.Counter())
>>> sumbags
Counter({'likes': 3, 'watch': 2, 'John': 2, 'to': 2, 'games': 1, 'football': 1, 'Mary': 1, 'movies': 1, 'also': 1, 'too': 1})
>>>

对于bagsofwords[0],是否可以访问字符串"likes"及其计数?

1 个答案:

答案 0 :(得分:1)

最简单的方法是,

dictofwords = dict(bagsofwords[0])
for word, count in dictofwords.iteritems():
    print word, count
  

<强>输出:
  电影1
  看1
  到1
  喜欢2
  喜欢2
  约翰1   玛丽1   太1

使用计数器方法

您可以按如下方式迭代计数器。

for i in bagsofwords[0].elements():
    print i, bagsofwords[0][i]
  

<强>输出:
  电影1
  看1
  到1
  喜欢2
  喜欢2
  约翰1   玛丽1   太1

Counter有一个名为most_common()的内置方法。使用它可以以排序的形式获取它。

for i in bagsofwords[0].most_common():
    print i[0], i[1]
  

<强>输出:
  喜欢2
  电影1
  看1
  到1
  约翰1   玛丽1   太1

希望它有所帮助! :)