我对python很陌生,希望得到关于这个问题的建议。
我希望在 python 中创建一个令牌字典。首先,让我简要描述一下我需要什么样的功能。
- 假设每个现有记录应该是 {word, type, count}。例如蛇,NN,10
- 每当出现新记录 {word, type} 时,它都会检查字典是否存在。如果找到,计数 += 1。否则,添加计数为 1 的新记录。
- 字典能够按最高计数排序
关于最佳结构的任何建议并向我展示它的示例?
提前致谢!
我对python很陌生,希望得到关于这个问题的建议。
我希望在 python 中创建一个令牌字典。首先,让我简要描述一下我需要什么样的功能。
关于最佳结构的任何建议并向我展示它的示例?
提前致谢!
collections.Counter为您服务。
您可以使用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)]