2012-05-08 11 views
8

preresultOrderedDict()です。OrderedDictの最初の100要素を取得

最初の100要素を保存します。またはpreresultを保存しますが、最初の100要素以外はすべて削除してください。

構造はそれのために仕事をisliceウィルこの

stats = {'a': {'email1':4, 'email2':3}, 
     'the': {'email1':2, 'email3':4}, 
     'or': {'email1':2, 'email3':1}} 

のようなものである鉱山は簡単な解決策はitertoolsを使用しています。ここitems

答えて

14

を持っていませんitertool.isliceに伝えます:?

>>> import collections 
>>> from itertools import islice 
>>> preresult = collections.OrderedDict(zip(range(200), range(200))) 
>>> list(islice(preresult, 100))[-10:] 
[90, 91, 92, 93, 94, 95, 96, 97, 98, 99] 

これはのみ返しますキー。あなたがアイテムをしたい場合は、iteritemsを使用(やPython 3でちょうどitems):

>>> list(islice(preresult.iteritems(), 100))[-10:] 
[(90, 90), (91, 91), (92, 92), (93, 93), (94, 94), (95, 95), (96, 96), (97, 97), (98, 98), (99, 99)] 
+0

@KurzedMetalのスライスバージョンである、あなたは、通常のスライスが動作する前に、リストに変換する必要があります。 'islice'は不要な項目をスキップできるので、より効率的です。 –

+0

申し訳ありませんが、私の間違い:Pは本当にitertoolsとコレクションのドキュメントを再度読む必要があります。 – KurzedMetal

+0

@senderle OrderDictにはiteritemsがありません。私はPython 3.2を使用します。 – juju

3

あなたはOrderedDictのキーをスライスし、それをコピーすることができます。

from collections import OrderedDict 

a = OrderedDict() 
for i in xrange(10): 
    a[i] = i*i 

b = OrderedDict() 
for i in a.keys()[0:5]: 
    b[i] = a[i] 

bは

関連する問題