0

我对python很陌生,希望得到关于这个问题的建议。

我希望在 python 中创建一个令牌字典。首先,让我简要描述一下我需要什么样的功能。

  1. 假设每个现有记录应该是 {word, type, count}。例如蛇,NN,10
  2. 每当出现新记录 {word, type} 时,它都会检查字典是否存在。如果找到,计数 += 1。否则,添加计数为 1 的新记录。
  3. 字典能够按最高计数排序

关于最佳结构的任何建议并向我展示它的示例?

提前致谢!

4

2 回答 2

4

collections.Counter为您服务。

于 2013-04-09T13:17:57.050 回答
2

您可以使用collections.Counter()(在 py2.7 中引入):

In [52]: from collections import Counter

In [53]: c=Counter("aaabbc")

In [54]: c
Out[54]: Counter({'a': 3, 'b': 2, 'c': 1})

In [55]: c.most_common()
Out[55]: [('a', 3), ('b', 2), ('c', 1)]

在 py2.6 中,您可以使用collections.defaultdict

In [58]: from collections import defaultdict

In [59]: strs="aaabbc"

In [61]: dic=defaultdict(int)

In [62]: for x in strs:
   ....:     dic[x]+=1
   ....:     

In [63]: dic
Out[63]: defaultdict(<type 'int'>, {'a': 3, 'c': 1, 'b': 2})

In [64]: from operator import itemgetter

In [66]: sorted(dic.items(),reverse=True,key=itemgetter(1))
Out[66]: [('a', 3), ('b', 2), ('c', 1)]
于 2013-04-09T13:19:34.810 回答