பைதான் ஆர்டர் செய்யப்பட்ட அகராதியான OrderedDict ஐ எவ்வாறு பயன்படுத்துவது.

வணிக

பைதான் அகராதிகள் (வகை டிக்டின் பொருள்கள்) உறுப்புகளின் வரிசையைப் பாதுகாக்காது; 3.6 முதல் CPython அவ்வாறு செய்துள்ளது, ஆனால் அது செயல்படுத்தல் சார்ந்தது மற்றும் பிற செயலாக்கங்களில் காலவரையற்றது; மொழி விவரக்குறிப்பு 3.7 முதல் வரிசையை பாதுகாக்கிறது.

OrderedDict ஆனது நிலையான நூலகத்தின் சேகரிப்பு தொகுதியில் வரிசையைப் பாதுகாக்கும் அகராதியாக வழங்கப்படுகிறது. இதைப் பயன்படுத்துவது பாதுகாப்பானது.

சேகரிப்பு தொகுதியை இறக்குமதி செய்யவும். இது நிலையான நூலகத்தில் சேர்க்கப்பட்டுள்ளது மற்றும் நிறுவ வேண்டிய அவசியமில்லை.

import collections

நீங்கள் பின்வருவனவற்றை எழுதினால், நீங்கள் சேகரிப்புகளைத் தவிர்க்கலாம். பின்வரும் உதாரணங்களில்.

from collections import OrderedDict

OrderedDict ஐ எவ்வாறு பயன்படுத்துவது என்பது பற்றிய விளக்கம் கீழே உள்ளது.

  • OrderedDict பொருளை உருவாக்குதல்
  • OrderedDict என்பது ஆணையின் துணைப்பிரிவாகும்
  • கூறுகளை ஆரம்பம் அல்லது முடிவுக்கு நகர்த்தவும்
  • எந்த நிலையிலும் புதிய உறுப்பைச் சேர்க்கவும்.
  • உறுப்புகளை மறுசீரமைக்கவும் (மறுவரிசைப்படுத்தவும்).
  • விசை அல்லது மதிப்பின்படி உறுப்புகளை வரிசைப்படுத்தவும்

OrderedDict பொருளை உருவாக்குதல்

கன்ஸ்ட்ரக்டர் சேகரிப்புகள். 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 என்பது ஆணையின் துணைப்பிரிவாகும்

OrderedDict என்பது ஆணையின் துணைப்பிரிவாகும்.

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

OrderedDict ஆனது டிக்ட் போன்ற அதே முறைகளைக் கொண்டுள்ளது, மேலும் உறுப்புகளைப் பெறுதல், மாற்றுதல், சேர்த்தல் மற்றும் நீக்குதல் போன்ற முறைகள் டிக்ட் போலவே இருக்கும்.

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 பொருளை உருவாக்க முடியும். குறிப்பாக, பின்வரும் ஓட்டத்தில் இதைச் செய்யலாம்.

  1. பட்டியல்()ஐப் பயன்படுத்தி உருப்படிகள்() முறை மூலம் பெறக்கூடிய காட்சிப் பொருட்களைப் பட்டியலிடுங்கள்.
  2. பட்டியலின் இன்செர்ட்() முறையில் விசை-மதிப்பு ஜோடிகளின் டூப்பிள் (விசை, மதிப்பு) சேர்க்கவும்
  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. பட்டியல்()ஐப் பயன்படுத்தி உருப்படிகள்() முறை மூலம் பெறக்கூடிய காட்சிப் பொருட்களைப் பட்டியலிடுங்கள்.
  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()

ஒரு அநாமதேய செயல்பாட்டை (லாம்ப்டா வெளிப்பாடு) குறிப்பிடுவதன் மூலம் வரிசையாக்கம் செய்யப்படுகிறது, இது ஒரு விசை அல்லது மதிப்பை ட்யூபில் (விசை, மதிப்பு) வரிசைப்படுத்தப்பட்ட செயல்பாட்டின் வாத விசையாக வழங்குகிறது.

நீங்கள் வரிசையைத் தலைகீழாக மாற்ற விரும்பினால், வரிசைப்படுத்தப்பட்ட() இன் தலைகீழ் வாதத்தை 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