
مرتب سازی یک عملیات اساسی در برنامه نویسی کامپیوتری است که شامل چیدمان عناصر در یک ترتیب خاص است.
فرقی نمیکند با اعداد، رشتهها یا ساختارهای داده پیچیده کار کنید، مرتبسازی نقش مهمی در سازماندهی و دستکاری کارآمد دادهها دارد.
از آرایههای کوچک گرفته تا مجموعه دادههای بزرگ، الگوریتمهای مرتبسازی به برنامهنویسان اجازه میدهند تا طیف گستردهای از مسائل، از جستجوی مقادیر خاص گرفته تا بهینهسازی دسترسی و تحلیل دادهها را حل کنند.
در این مقاله، نحوه مرتب سازی دیکشنری با کلیدها در پایتون را تحلیل خواهیم کرد. ما مراحل را برای پیگیری و درک آسان تجزیه می کنیم. توصیه می کنم برای استفاده بیشتر از این مقاله با زبان برنامه نویسی پایتون آشنا باشید.
دیکشنری پایتون چیست؟
در پایتون، دیکشنری ها یک ساختار داده قدرتمند هستند که برای ذخیره جفت های کلید-مقدار استفاده می شود. آنها روشی مناسب برای سازماندهی و بازیابی داده ها بر اساس کلیدهای منحصر به فرد ارائه می دهند. اما ممکن است شرایطی وجود داشته باشد که لازم باشد فرهنگ لغت را بر اساس کلیدهای آن به ترتیب خاصی مرتب کنید.
یک کلید در پایتون به شناسه منحصر به فرد مرتبط با یک مقدار خاص اشاره دارد. این به عنوان راهی برای دسترسی و بازیابی مقادیر از فرهنگ لغت بر اساس کلیدهای مربوطه عمل می کند. کلیدهای یک فرهنگ لغت می توانند از هر نوع داده غیرقابل تغییری مانند رشته ها، اعداد (اعداد صحیح یا شناور) یا چند تایی باشند. کلید باید در فرهنگ لغت منحصر به فرد باشد، به این معنی که هیچ دو کلیدی نمی توانند ارزش یکسانی داشته باشند.
روش های مرتب سازی دیکت بر اساس کلید در پایتون
روش ۱: استفاده از تابع sorted()
ساده ترین راه برای مرتب سازی دیکشنری بر اساس کلیدهای آن، استفاده از تابع sorted()
به همراه متد items()
دیکشنری است.
متد items()
فهرست ی از جفتهای کلید-مقدار را به صورت تاپل برمیگرداند. با ارسال این فهرست به تابع sorted()
می توانیم تاپل ها را بر اساس اولین عنصر آنها (کلیدها) مرتب کنیم.
مثال:
my_dict = {'b': 2, 'a': 1, 'c': 3} sorted_dict = dict(sorted(my_dict.items())) print(sorted_dict)
خروجی:
{'a': 1, 'b': 2, 'c': 3}
در این مثال، تابع sorted()
فهرست my_dict.items()
را می گیرد و یک فهرست مرتب شده جدید از تاپل ها را برمی گرداند. ما از سازنده dict()
برای تبدیل فهرست مرتب شده به دیکشنری استفاده می کنیم.
روش ۲: استفاده از فهرست تاپل ها
اگر رویکرد دستیتری را ترجیح میدهید، میتوانید فرهنگ لغت را به فهرستی از چند تایی تبدیل کنید، فهرست را با استفاده از هر تکنیک مرتبسازی موجود در پایتون مرتب کنید و سپس آن را به دیکشنری تبدیل کنید.
مثال:
my_dict = {'b': 2, 'a': 1, 'c': 3} sorted_list = sorted(my_dict.items()) sorted_dict = {} for key, value in sorted_list: sorted_dict[key] = value print(sorted_dict)
خروجی:
{'a': 1, 'b': 2, 'c': 3}
در این مثال از تابع sorted()
برای مرتب سازی فهرست my_dict.items()
استفاده کردیم. سپس یک فرهنگ لغت خالی جدید با sorted_dict
ایجاد می شود. فهرست مرتب شده دوباره تکرار می شود و هر جفت کلید-مقدار با استفاده از انتساب به sorted_dict
اضافه می شود.
روش ۳: استفاده از مجموعه ها. کلاس collections.OrderedDict
روش دیگر برای مرتبسازی فرهنگ لغت بر اساس کلید، استفاده از کلاس collections.OrderedDict
از کتابخانه استاندارد پایتون است.
این کلاس یک زیر کلاس dict است که ترتیب عناصر خود را بر اساس ترتیب درج به خاطر می آورد. ما می توانیم از این ویژگی برای دستیابی به مرتب سازی مبتنی بر کلید استفاده کنیم.
مثال:
from collections import OrderedDict my_dict = {'b': 2, 'a': 1, 'c': 3} sorted_dict = OrderedDict(sorted(my_dict.items())) print(sorted_dict)
خروجی:
OrderedDict([('a', 1), ('b', 2), ('c', 3)])
در این مثال، تابع sorted()
برای مرتبسازی فهرست my_dict.items()
استفاده میشود و سپس فهرست مرتبشده به سازنده OrderedDict()
منتقل میشود تا یک دیکشنری جدید با ترتیب مرتبشده ایجاد کند.
نتیجه
در پایتون، با استفاده از روشهای مختلف، میتوانید فرهنگ لغت را بر اساس کلیدهای آن مرتب کنید. در این مقاله، ما سه رویکرد را تحلیل کردیم: استفاده از تابع sorted()
، استفاده از کلاس collections.OrderedDict
، و مرتبسازی دستی فهرستی از تاپلها. هر روش سطح متفاوتی از کنترل و انعطاف پذیری را فراهم می کند.
با استفاده از تابع sorted()
می توانیم به سرعت یک دیکشنری را بر اساس کلید مرتب کنیم و در نتیجه یک دیکشنری جدید به دست آوریم. اگر حفظ ترتیب درج بسیار مهم است، کلاس collections.OrderedDict
انتخاب مناسبی است.
برای کسانی که رویکرد دستیتری را ترجیح میدهند، تبدیل فرهنگ لغت به فهرستی از چند تا، مرتبسازی فهرست و سپس ایجاد یک فرهنگ لغت جدید میتواند گزینههای سفارشیسازی بیشتری را ارائه دهد.
بیایید در توییتر و لینکدین متصل شویم. همچنین می توانید در کانال یوتیوب من مشترک شوید.