2012-05-06 10 views
0

私は束または電子メールからデータを読み取り、各単語の頻度を数えます。最初に2つのカウンタを作成します。与えられたキーのリストでdictをソート

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?または他の方法? Lはあなたのリストを参照

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

を:Lの値は1回だけと仮定すると、

+1

可能重複値によって](http://stackoverflow.com/questions/10463442/sorted-a-dict-by-value) – senderle

+0

私が正しく理解するなら、あなたはdictを持っています:mydict = {a:5、b:2 、c:3}の値をソートする必要があります。これについてはどうすればいいですか?sorted(mydict.items()、key = lambda x:x [1]) –

答えて

1

逆の順序で値が返された場合は、sortedコールにreversed=Trueを追加して修正できます。

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')] 
関連する問題