0

たくさんのメールからデータを読み、各単語の頻度を数えます。最初に2つのカウンターを作成します。

counters.stats = collections.defaultdict(dict)

統計の鍵は言葉です。単語ごとに、キーは電子メールの名前であり、値はこの電子メール内のその単語の頻度であるdictを作成します。

これで、counters.statsにこれらのキーを別の順序で含むリストができました。'stats'のキーをリストで並べ替えたい。

def print_stats(counters):
    for form, cat_to_stats in sorted(counters.stats.items(), key = chi_sort):

関数chi_sortを作成する方法は?または他の方法?

4

2 に答える 2

1

Lの値が1回だけ発生すると仮定します。

D = dict((b,a) for a,b in enumerate(L))
chi_sort = D.get

ここで、Lはあなたのリストを指します。

これにより値が逆の順序で生成される場合は、呼び出しに追加することで修正できreversed=Trueますsorted

于 2012-05-06T05:58:16.090 に答える
0

これを使って:

chi_sort = lambda item: your_list_here.index(item[0])

(リストに置き換えyour_list_hereてください)

例(collections.OrderedDict通常に置き換えることができますdict):

>>> import collections
>>> ordereddict = collections.OrderedDict((
...     ('key_78', 'value'),
...     ('key_40', 'value'),
...     ('key_96', 'value'),
...     ('key_53', 'value'),
...     ('key_04', 'value'),
...     ('key_89', 'value'),
...     ('key_52', 'value'),
...     ('key_86', 'value'),
...     ('key_16', 'value'),
...     ('key_63', 'value'),
... ))
>>>
>>> alist = sorted(ordereddict.keys())
>>> alist
['key_04', 'key_16', 'key_40', 'key_52', 'key_53', 'key_63', 'key_78', 'key_86',
 'key_89', 'key_96']
>>> sorted(ordereddict.items(), key=lambda item: alist.index(item[0]))
[('key_04', 'value'), ('key_16', 'value'), ('key_40', 'value'), ('key_52', 'valu
e'), ('key_53', 'value'), ('key_63', 'value'), ('key_78', 'value'), ('key_86', '
value'), ('key_89', 'value'), ('key_96', 'value')]
于 2014-05-10T21:34:56.027 に答える