OrderedDict, Python ऑर्डर केलेला शब्दकोश कसा वापरायचा.

व्यवसाय

पायथन शब्दकोश (डिक्ट प्रकारातील वस्तू) घटकांचा क्रम जपत नाहीत; CPython ने 3.6 पासून असे केले आहे, परंतु ते अंमलबजावणीवर अवलंबून आहे आणि इतर अंमलबजावणीमध्ये अनिश्चित आहे; भाषा तपशीलाने 3.7 पासून ऑर्डर जतन केली आहे.

OrderedDict मानक लायब्ररीच्या संग्रह मॉड्यूलमध्ये ऑर्डर जतन करणारा शब्दकोश म्हणून प्रदान केला जातो. हे वापरणे सुरक्षित आहे.

संग्रह मॉड्यूल आयात करा. हे मानक लायब्ररीमध्ये समाविष्ट केले आहे आणि स्थापित करण्याची आवश्यकता नाही.

import collections

आपण खालील लिहिल्यास, आपण संग्रह वगळू शकता. खालील उदाहरणांमध्ये.

from collections import OrderedDict

OrderedDict कसे वापरावे याचे वर्णन खाली दिले आहे.

  • OrderedDict ऑब्जेक्ट तयार करणे
  • OrderedDict हा dict चा उपवर्ग आहे
  • घटक सुरवातीला किंवा शेवटी हलवा
  • कोणत्याही स्थितीत नवीन घटक जोडा.
  • घटकांची पुनर्रचना करा (पुनर्क्रमित करा).
  • की किंवा मूल्यानुसार घटकांची क्रमवारी लावा

OrderedDict ऑब्जेक्ट तयार करणे

Constructor collections.OrderedDict() चा वापर OrderedDict ऑब्जेक्ट तयार करण्यासाठी केला जाऊ शकतो.

एक रिक्त OrderedDict ऑब्जेक्ट तयार करा आणि मूल्ये जोडा.

od = collections.OrderedDict()

od['k1'] = 1
od['k2'] = 2
od['k3'] = 3

print(od)
# OrderedDict([('k1', 1), ('k2', 2), ('k3', 3)])

कन्स्ट्रक्टरला वितर्क निर्दिष्ट करणे देखील शक्य आहे.

तुम्ही कीवर्ड आर्ग्युमेंट्स, की-व्हॅल्यू जोड्यांचा क्रम (जसे की ट्युपल्स (की, व्हॅल्यू)) इत्यादी वापरू शकता. नंतरची सूची किंवा टपल असू शकते जोपर्यंत ती एक की-व्हॅल्यू जोडी आहे.

print(collections.OrderedDict(k1=1, k2=2, k3=3))
print(collections.OrderedDict([('k1', 1), ('k2', 2), ('k3', 3)]))
print(collections.OrderedDict((['k1', 1], ['k2', 2], ['k3', 3])))
# OrderedDict([('k1', 1), ('k2', 2), ('k3', 3)])
# OrderedDict([('k1', 1), ('k2', 2), ('k3', 3)])
# OrderedDict([('k1', 1), ('k2', 2), ('k3', 3)])

आवृत्ती 3.5 पर्यंत, कीवर्ड वितर्कांचा क्रम जतन केलेला नव्हता, परंतु आवृत्ती 3.6 पासून, तो आता संरक्षित आहे.

आवृत्ती 3.6 मध्ये बदलले: PEP 468 च्या स्वीकृतीसह, OrderedDict कन्स्ट्रक्टरचा क्रम आणि update() पद्धतीला पास केलेले कीवर्ड वितर्क जतन केले जातात.
collections — Container datatypes — Python 3.10.0 Documentation

सामान्य शब्दकोष (डिक्ट प्रकार ऑब्जेक्ट्स) देखील कन्स्ट्रक्टरला पास केले जाऊ शकतात, परंतु अंमलबजावणीच्या बाबतीत जेथे dict प्रकार ऑर्डर राखत नाही, त्यापासून तयार केलेला OrderedDict देखील ऑर्डर जतन करणार नाही.

print(collections.OrderedDict({'k1': 1, 'k2': 2, 'k3': 3}))
# OrderedDict([('k1', 1), ('k2', 2), ('k3', 3)])

OrderedDict हा dict चा उपवर्ग आहे

OrderedDict हा dict चा उपवर्ग आहे.

print(issubclass(collections.OrderedDict, dict))
# True

OrderedDict मध्ये देखील dict प्रमाणेच पद्धती आहेत आणि घटक मिळवणे, बदलणे, जोडणे आणि काढणे या पद्धती dict सारख्याच आहेत.

print(od['k1'])
# 1

od['k2'] = 200
print(od)
# OrderedDict([('k1', 1), ('k2', 200), ('k3', 3)])

od.update(k4=4, k5=5)
print(od)
# OrderedDict([('k1', 1), ('k2', 200), ('k3', 3), ('k4', 4), ('k5', 5)])

del od['k4'], od['k5']
print(od)
# OrderedDict([('k1', 1), ('k2', 200), ('k3', 3)])

तपशीलांसाठी पुढील लेख पहा.

घटक सुरवातीला किंवा शेवटी हलवा

तुम्ही OrderedDict ची स्वतःची पद्धत move_to_end() वापरू शकता.

प्रथम युक्तिवाद म्हणून की निर्दिष्ट करा. डीफॉल्ट शेवटपर्यंत हलवणे आहे, परंतु शेवटचा दुसरा युक्तिवाद चुकीचा असल्यास, तो सुरुवातीला हलविला जाईल.

od.move_to_end('k1')
print(od)
# OrderedDict([('k2', 200), ('k3', 3), ('k1', 1)])

od.move_to_end('k1', False)
print(od)
# OrderedDict([('k1', 1), ('k2', 200), ('k3', 3)])

कोणत्याही स्थितीत नवीन घटक जोडा.

अनियंत्रित स्थितीत नवीन घटक जोडून नवीन ऑर्डरडिक्ट ऑब्जेक्ट तयार करणे शक्य आहे. विशेषतः, हे खालील प्रवाहात केले जाऊ शकते.

  1. list() वापरून आयटम() पद्धतीने मिळवता येणार्‍या व्यू ऑब्जेक्ट्सची यादी करा.
  2. सूचीच्या insert() पद्धतीमध्ये की-व्हॅल्यू जोड्यांचा टपल (की, मूल्य) जोडा
  3. कन्स्ट्रक्टर कलेक्शनमध्ये पास करून नवीन ऑब्जेक्ट तयार करा. OrderedDict()
l = list(od.items())
print(l)
# [('k1', 1), ('k2', 200), ('k3', 3)]

l.insert(1, ('kx', -1))
print(l)
# [('k1', 1), ('kx', -1), ('k2', 200), ('k3', 3)]

od = collections.OrderedDict(l)
print(od)
# OrderedDict([('k1', 1), ('kx', -1), ('k2', 200), ('k3', 3)])

insert() प्रथम आर्ग्युमेंट म्हणून घालायचे स्थान आणि दुसरा वितर्क म्हणून घालायचे घटक निर्दिष्ट करते.

उदाहरणामध्ये, मूळ व्हेरिएबलला नवीन ऑब्जेक्ट नियुक्त केला जातो आणि मूळ ऑब्जेक्टमध्ये कोणतेही नवीन घटक जोडलेले नाहीत.

घटकांची पुनर्रचना करा (पुनर्क्रमित करा).

घटक बदलणे ही वरील उदाहरणाप्रमाणेच प्रक्रिया आहे.

  1. list() वापरून आयटम() पद्धतीने मिळवता येणार्‍या व्यू ऑब्जेक्ट्सची यादी करा.
  2. सूचीमधील घटक बदला
  3. कन्स्ट्रक्टर कलेक्शनमध्ये पास करून नवीन ऑब्जेक्ट तयार करा. OrderedDict()
l = list(od.items())
print(l)
# [('k1', 1), ('kx', -1), ('k2', 200), ('k3', 3)]

l[0], l[2] = l[2], l[0]
print(l)
# [('k2', 200), ('kx', -1), ('k1', 1), ('k3', 3)]

od = collections.OrderedDict(l)
print(od)
# OrderedDict([('k2', 200), ('kx', -1), ('k1', 1), ('k3', 3)])

तुम्‍हाला एखादी की स्‍पष्‍ट करायची असेल आणि ती बदलायची असेल, तर खाली दर्शविल्‍याप्रमाणे कीच्‍या सूचीमधून इंडेक्स (स्थिती) मिळवण्‍यासाठी इंडेक्स() पद्धत वापरा.

l = list(od.items())
k = list(od.keys())
print(k)
# ['k2', 'kx', 'k1', 'k3']

print(k.index('kx'))
# 1

l[k.index('kx')], l[k.index('k3')] = l[k.index('k3')], l[k.index('kx')]
print(l)
# [('k2', 200), ('k3', 3), ('k1', 1), ('kx', -1)]

od = collections.OrderedDict(l)
print(od)
# OrderedDict([('k2', 200), ('k3', 3), ('k1', 1), ('kx', -1)])

की किंवा मूल्यानुसार घटकांची क्रमवारी लावा

आयटम() पद्धतीद्वारे मिळू शकणार्‍या व्यू ऑब्जेक्टवर आधारित क्रमवारी लावलेल्या की-व्हॅल्यू जोड्यांच्या ट्युपल्सची (की, मूल्य) सूची तयार करा आणि नवीन ऑब्जेक्ट तयार करण्यासाठी ते कन्स्ट्रक्टर कलेक्शन्सकडे पाठवा. OrderedDict().

एक अनामिक फंक्शन (लॅम्बडा एक्सप्रेशन) निर्दिष्ट करून क्रमवारी लावली जाते जी बिल्ट-इन फंक्शन सॉर्टेड() च्या वितर्क की म्हणून ट्युपल (की, मूल्य) वरून की किंवा मूल्य मिळवते.

तुम्हाला क्रम उलटवायचा असल्यास, sorted() चा रिव्हर्स आर्ग्युमेंट true वर सेट करा.

print(od)
# OrderedDict([('k2', 200), ('k3', 3), ('k1', 1), ('kx', -1)])

od_sorted_key = collections.OrderedDict(
    sorted(od.items(), key=lambda x: x[0])
)
print(od_sorted_key)
# OrderedDict([('k1', 1), ('k2', 200), ('k3', 3), ('kx', -1)])

od_sorted_value = collections.OrderedDict(
    sorted(od.items(), key=lambda x: x[1], reverse=True)
)
print(od_sorted_value)
# OrderedDict([('k2', 200), ('k3', 3), ('k1', 1), ('kx', -1)])
Copied title and URL