पाइथन शब्दकोशहरू (डिक्ट प्रकारका वस्तुहरू) तत्वहरूको क्रम सुरक्षित गर्दैनन्; CPython ले 3.6 देखि त्यसो गरेको छ, तर यो कार्यान्वयनमा निर्भर र अन्य कार्यान्वयनहरूमा अनिश्चित छ; भाषा विशिष्टताले 3.7 देखि क्रम सुरक्षित गरेको छ।
OrderedDict मानक पुस्तकालयको संग्रह मोड्युलमा एक शब्दकोशको रूपमा प्रदान गरिएको छ जसले अर्डरलाई सुरक्षित गर्दछ। यो एक प्रयोग गर्न सुरक्षित छ।
सङ्कलन मोड्युल आयात गर्नुहोस्। यो मानक पुस्तकालयमा समावेश छ र स्थापना गर्न आवश्यक छैन।
import collections
यदि तपाइँ निम्न लेख्नुहुन्छ भने, तपाइँ संग्रहहरू छोड्न सक्नुहुन्छ। निम्न उदाहरणहरूमा।
from collections import OrderedDict
OrderedDict कसरी प्रयोग गर्ने भन्ने ’bout निम्न विवरण छ।
- 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 कन्स्ट्रक्टरको क्रम र अपडेट() विधिमा पास गरिएका कीवर्ड तर्कहरू सुरक्षित छन्।
collections — Container datatypes — Python 3.10.0 Documentation
सामान्य शब्दकोशहरू (डिक्ट प्रकारका वस्तुहरू) पनि कन्स्ट्रक्टरलाई पास गर्न सकिन्छ, तर कार्यान्वयनको अवस्थामा जहाँ डिक्ट प्रकारले अर्डर सुरक्षित गर्दैन, त्यसबाट उत्पन्न अर्डरडिक्टले पनि क्रमलाई सुरक्षित गर्दैन।
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)])
कुनै पनि स्थितिमा नयाँ तत्व थप्नुहोस्।
यो एक मनमानी स्थिति मा थपिएको नयाँ तत्व संग नयाँ OrderedDict वस्तु सिर्जना गर्न सम्भव छ। विशेष गरी, यो निम्न प्रवाह मा गर्न सकिन्छ।
- सूची () प्रयोग गरेर वस्तुहरू() विधिबाट प्राप्त गर्न सकिने दृश्य वस्तुहरू सूचीबद्ध गर्नुहोस्।
- सूचीको insert() विधिमा कुञ्जी-मान जोडीहरूको टपल (कुञ्जी, मान) थप्नुहोस्
- कन्स्ट्रक्टर संग्रहहरूमा पास गरेर नयाँ वस्तु सिर्जना गर्नुहोस्। 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() ले पहिलो आर्गुमेन्टको रूपमा सम्मिलित हुने स्थिति र दोस्रो आर्गुमेन्टको रूपमा घुसाउने तत्व निर्दिष्ट गर्दछ।
उदाहरणमा, मूल चरमा नयाँ वस्तु तोकिएको छ, र मूल वस्तुमा कुनै नयाँ तत्वहरू थपिएका छैनन्।
तत्वहरू पुन: व्यवस्थित गर्नुहोस् (पुनः क्रमबद्ध गर्नुहोस्)
तत्वहरू प्रतिस्थापन गर्नु माथिको उदाहरणमा जस्तै प्रक्रिया हो।
- सूची () प्रयोग गरेर वस्तुहरू() विधिबाट प्राप्त गर्न सकिने दृश्य वस्तुहरू सूचीबद्ध गर्नुहोस्।
- सूचीमा तत्वहरू बदल्नुहोस्
- कन्स्ट्रक्टर संग्रहहरूमा पास गरेर नयाँ वस्तु सिर्जना गर्नुहोस्। 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)])
यदि तपाइँ कुञ्जी निर्दिष्ट गर्न र यसलाई बदल्न चाहनुहुन्छ भने, तल देखाइएको कुञ्जीहरूको सूचीबाट अनुक्रमणिका (स्थिति) प्राप्त गर्न index() विधि प्रयोग गर्नुहोस्।
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()।
बिल्ट-इन प्रकार्य क्रमबद्ध () को आर्गुमेन्ट कुञ्जीको रूपमा टुपल (कुञ्जी, मान) बाट कुञ्जी वा मान फिर्ता गर्ने बेनामी प्रकार्य (lambda अभिव्यक्ति) निर्दिष्ट गरेर क्रमबद्ध गरिन्छ।
यदि तपाइँ क्रम उल्टाउन चाहनुहुन्छ भने, क्रमबद्ध () को उल्टो तर्कलाई 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)])


