ویدیو آشنایی با orderedDict در پایتون
April 2023
دیکشنری ها در پایتون بدون ساختار هستند اما با استفاده از orderedDictها میتوانید دیکشنری هایی بسازید که ساختارمند هستند یعنی ترتیب ورود اطلاعات رو حفظ میکنند. خاصیت دیکشنری ها در پایتون به این شکل هستش که ترتیب ورود اطلاعات رو حفظ نکنند. ممکنه ترتیب آیتم هایی که در سیستم شما وجود داره با سیستم دیگه ای فرق کنه.
برای ایجاد کردن یک orderedDict میتونید به شکل زیر کار کنید:
from collections import OrderedDict
names = OrderedDict(jack=12, mark=43, anna=29)
print(names)
>> OrderedDict([('jack', 12), ('mark', 43), ('anna', 29)])
در پایتون orderedDictها متدهایی هم دارند که میتونید از اونها استفاده کنید. اولین متد popitem هستش که به شما اجازه میده یک آیتم رو حذف کنید:
names = OrderedDict(jack=12, mark=43, anna=29)
names.popitem()
print(names)
>> OrderedDict([('jack', 12), ('mark', 43)])
همینطور که میبینید popitem از آخر دیکشنری یک مقداری رو حذف کرد. اما اگه بخواید از اول دیکشنری مقدار حذف کنید میتونید مقدار last رو در popitem برابر با False قرار بدین:
names.popitem(last=False)
>> OrderedDict([('mark', 43), ('anna', 29)])
حالا دیگه از اول یک آیتم رو حذف کرده.
متد بعدی که میتونید استفاده کنید move_to_end هستش:
names.move_to_end('jack')
>> OrderedDict([('mark', 43), ('anna', 29), ('jack', 12)])
این متد یک کلید میگیره و اون رو منتقل میکنه به آخر دیکشنری. اما اگه بخواید یک کلید به اول دیکشنری منتقل کنید میتونید مقدار last رو برابر با False قرار بدین.
names.move_to_end('anna', last=False)
>> OrderedDict([('anna', 29), ('jack', 12), ('mark', 43)])
اگر ویدیو بالا را دوست داشتید پیشنهاد میکنیم به مطالب زیر هم سر بزنید:
دوره آموزش Design Patterns در پایتون
سیامک
October 2021پاسخ به نظر
سلام استاد
من این جمله رو توی stackoverflow پیدا کردم
آیا دیگه نیازی به استفاده از این ماژول نداریم در ورژن های جدیدتر پایتون؟
Dictionaries are ordered in Python 3.6 (under the CPython implementation at least) unlike in previous incarnations
پاسخ به نظر
امیرحسین بیگدلو
October 2021سلام
هنوز هم لازمه. چون ویژگیهای دیگه هم داره.
shayan
July 2021پاسخ به نظر
سلام
دیگ از پایتون 3.5 ب بعد الان از OrderedDict ها استفاده ای میشه؟
لازمه یادش بگیریم؟
پاسخ به نظر