0

我有一个脚本来查找列表中某个单词的计数

newm =[]
for i in range(0,len(alpha)-1):
    newm.append (alpha[i][0])
print newm
#count for list
word_counter =[]
for word in newm:
  print word
  if word in word_counter:
      word_counter[word] += 1
  else:
      word_counter[word] = 1

newm生成:

['today', 'alpha', 'radiation', 'helium', 'work', 'charge', 'model', 'atom', 'discovery', 'interpretation', 'scattering', 'gold', 'foil', 'splitting', 'atom', 'reaction', 'nitrogen', 'alpha']

我想找到列表 newm 中每个单词的计数,但是它给出了错误:

TypeError: list indices must be integers, not str

我该如何解决?

4

2 回答 2

2

如何使用字典:

word_counter = {}

if word in word_counter:
    word_counter[word] += 1
else:
    word_counter[word] = 1

if/else用于检查字典是否已经包含该单词。如果是,它将增加其关联的值,如果不是,它将值初始化为 1。

Python 字典

而且,要了解更多关于您的代码为何无法正常工作的信息,请参阅 list 上的更多内容

正如Ashwini Chaudhary所提到的,您还可以使用whocollections.Counter的目的是做这种事情:

>>> # Tally occurrences of words in a list
>>> cnt = Counter()
>>> for word in ['red', 'blue', 'red', 'green', 'blue', 'blue']:
...     cnt[word] += 1
>>> cnt
Counter({'blue': 3, 'red': 2, 'green': 1})

这是一个如何直接从可迭代对象初始化它的示例:

>>> c = Counter(['eggs','ham'])
>>> c
Counter({'eggs': 1, 'ham': 1})
>>> c['bacon']
0
>>> c['ham']
1

示例取自:集合:计数器对象

于 2013-08-18T13:45:31.360 回答
0

这是另一个使用defaultdict.

In [23]: from collections import defaultdict
In [24]: data = ['a','b','c','a','b','b','d']
In [25]: counts = defaultdict(int)
In [26]: for x in data: counts[x]+=1
In [27]: counts
Out[27]: defaultdict(<type 'int'>, {'a': 2, 'c': 1, 'b': 3, 'd': 1})
于 2013-08-18T14:03:34.023 回答