1

私は逆索引を持っています。これは、私の単語辞書と、その用語が掲載されている文書の投稿リストで構成されています。私が単に欲しいのは、辞書をアルファベット順にソートすることです。これが現在の外観です(例):

self.index = 
defaultdict(<type 'list'>, {
'all': [['d03', array('I', [32L, 40L)], ['d07', array('I', [32L, 40L, 47L])], ['d05', array('I', [32L, 40L, 47L])]],
'just': [['d03', array('I', [11L])], ['d07', array('I', [11L])], ['d05', array('I', [11L])], ['d08', array('I', [11L])]])
'collect': [['d04', array('I', [24L])]]
'occurring': [['d03', array('I', [34L])], ['d07', array('I', [34L])]

...などなど、並べ替え後は次のようになります。

'all': [['d03', array('I', [32L, 40L)], ['d07', array('I', [32L, 40L, 47L])], ['d05', array('I', [32L, 40L, 47L])]],
'collect': [['d04', array('I', [24L])]]
'just': [['d03', array('I', [11L])], ['d07', array('I', [11L])], ['d05', array('I', [11L])], ['d08', array('I', [11L])]])
'occurring': [['d03', array('I', [34L])], ['d07', array('I', [34L])]

私が試したこと:

self.index = sorted(self.index)
print self.index
print self.index['all']

最初の print 呼び出しは完全に並べ替えられた単語のリストを提供しますが、「all」という単語の接続された postlist を取得しようとすると、次のエラー メッセージが表示されます。

TypeError: list indices must be integers, not str
4

3 に答える 3

3

辞書を呼び出すと、ソートされたキーsorted()のリストだけが返されます。辞書自体には固有の順序がなく、並べ替えることはできません。

の出力を に再割り当てしたため、元のsorted()self.indexの参照が失われましたdefaultdict

于 2013-11-24T14:39:13.473 に答える
2

あなたが言及している意味で辞書をソートできるとは思いません。ソートされた辞書を表示したい場合は、次のことを試すことができます。

sorted(self.index.items())

ただし、結果は辞書ではないことに注意してください。元の辞書で互いに関連付けられる (キー、値) タプルの単なるリストです。

于 2013-11-24T14:44:12.163 に答える