ऑर्डर्ड डिक्ट का उपयोग कैसे करें, एक पायथन ऑर्डर्ड डिक्शनरी।

व्यापार

पायथन डिक्शनरी (ऑब्जेक्ट्स ऑफ टाइप डिक्ट) तत्वों के क्रम को संरक्षित नहीं करते हैं; CPython ने 3.6 के बाद से ऐसा किया है, लेकिन यह अन्य कार्यान्वयनों में कार्यान्वयन-निर्भर और अनिश्चित है; भाषा विनिर्देश ने 3.7 के बाद से आदेश को संरक्षित किया है।

ऑर्डर्ड डिक्ट मानक पुस्तकालय के संग्रह मॉड्यूल में एक शब्दकोश के रूप में प्रदान किया जाता है जो ऑर्डर को सुरक्षित रखता है। इसका उपयोग करना सुरक्षित है।

संग्रह मॉड्यूल आयात करें। यह मानक पुस्तकालय में शामिल है और इसे स्थापित करने की आवश्यकता नहीं है।

import collections

यदि आप निम्नलिखित लिखते हैं, तो आप संग्रहों को छोड़ सकते हैं। निम्नलिखित उदाहरणों में।

from collections import 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 में बदला गया: पीईपी 468 की स्वीकृति के साथ, ऑर्डर्ड डिक्ट कंस्ट्रक्टर का क्रम और अपडेट () विधि को दिए गए कीवर्ड तर्क संरक्षित हैं।
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 तानाशाही का एक उपवर्ग है

ऑर्डर्ड डिक्ट तानाशाही का एक उपवर्ग है।

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. उन वस्तुओं को सूचीबद्ध करें जिन्हें सूची () का उपयोग करके आइटम () विधि से प्राप्त किया जा सकता है।
  2. सूची के इन्सर्ट () मेथड में की-वैल्यू पेयर का टपल (की, वैल्यू) जोड़ें
  3. इसे कंस्ट्रक्टर संग्रह में पास करके एक नई वस्तु बनाएं। ऑर्डर किए गए डिक्ट ()
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)])

सम्मिलित करें () पहले तर्क के रूप में सम्मिलित करने की स्थिति और दूसरे तर्क के रूप में सम्मिलित किए जाने वाले तत्व को निर्दिष्ट करता है।

उदाहरण में, एक नई वस्तु को मूल चर को सौंपा गया है, और मूल वस्तु में कोई नया तत्व नहीं जोड़ा गया है।

तत्वों को पुनर्व्यवस्थित (पुन: व्यवस्थित) करें

तत्वों को बदलना वही प्रक्रिया है जो ऊपर के उदाहरण में है।

  1. उन वस्तुओं को सूचीबद्ध करें जिन्हें सूची () का उपयोग करके आइटम () विधि से प्राप्त किया जा सकता है।
  2. तत्वों को सूची में बदलें
  3. इसे कंस्ट्रक्टर संग्रह में पास करके एक नई वस्तु बनाएं। ऑर्डर किए गए डिक्ट ()
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)])

तत्वों को कुंजी या मान द्वारा क्रमबद्ध करें

आइटम्स () विधि द्वारा प्राप्त किए जा सकने वाले व्यू ऑब्जेक्ट के आधार पर सॉर्ट किए गए की-वैल्यू पेयर के टुपल्स (कुंजी, मान) की एक सूची बनाएं, और इसे एक नई ऑब्जेक्ट बनाने के लिए कंस्ट्रक्टर संग्रह में पास करें।

सॉर्टिंग एक अनाम फ़ंक्शन (लैम्ब्डा एक्सप्रेशन) को निर्दिष्ट करके किया जाता है जो टुपल (कुंजी, मान) से एक कुंजी या मान को अंतर्निहित फ़ंक्शन सॉर्ट () की तर्क कुंजी के रूप में देता है।

यदि आप ऑर्डर को उलटना चाहते हैं, तो सॉर्ट किए गए () के रिवर्स तर्क को सत्य पर सेट करें।

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