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 に答える