2012-05-08 11 views
8

preresult का पहला 100 तत्व प्राप्त करें OrderedDict() है।ऑर्डर्ड डिक्ट

मैं इसमें पहले 100 तत्वों को सहेजना चाहता हूं। या preresult रखें लेकिन पहले 100 तत्वों के अलावा अन्य सभी चीज़ों को हटा दें।

संरचना इसके लिए काम islice होगा इस

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

की तरह है मेरा itertool.islice बताता items

उत्तर

14

यहाँ नहीं है एक सरल उपाय itertools उपयोग कर रहा है:

>>> 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 का उपयोग (या बस अजगर 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

क्षमा करें, मेरी गलती: पी मुझे वास्तव में itertools और संग्रह दस्तावेज को फिर से पढ़ने की जरूरत है। – KurzedMetal

+0

@sendle यह कहता है कि ऑर्डरडिक्ट में iteritems नहीं है। मैं अजगर 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] 

ख एक

संबंधित मुद्दे