ترتيب البيانات في Python

تعتبر Python OrderedDict فئة فرعية لـ dict تحتفظ بترتيب إدراج العناصر. عندما نكرر فوق OrderedDict، تُرجع العناصر بالترتيب الذي تم إدراجها به. القاموس العادي لا يتتبع ترتيب الإدراج. لذلك، عند التكرار فوقه، تُرجع العناصر بترتيب عشوائي. عندما نريد التأكد من أن العناصر تُرجع بالترتيب الذي تم إدراجها به، يمكننا استخدام OrderedDict.

Python OrderedDict

  • OrderedDict هو جزء من وحدة python collections.
  • يمكننا إنشاء OrderedDict فارغة وإضافة العناصر إليها. إذا قمنا بإنشاء OrderedDict عن طريق تمرير وسيط dict، فقد يتم فقدان الترتيب لأن القاموس لا يحتفظ بترتيب الإدراج.
  • إذا تمت كتابة عنصر في OrderedDict، فإن موقعه يُحافظ عليه.
  • إذا تم حذف عنصر وإعادة إضافته مرة أخرى، فإنه يتحرك إلى الأخير.
  • تقوم OrderedDict بإزالة العناصر بترتيب FIFO باستخدام popitem. يقبل وسيط boolean last، إذا تم تعيينه إلى True، فإن العناصر تُرجع بترتيب LIFO.
  • يمكننا نقل عنصر إلى بداية أو نهاية OrderedDict باستخدام وظيفة move_to_end. إنها تقبل وسيطًا منطقيًا هو last، إذا تم تعيينها إلى False ، فإن العنصر يتم نقله إلى بداية الـ ordered dict.
  • ابتداءً من Python 3.6 فصاعدًا، يتم الاحتفاظ بالترتيب لوسيطات الكلمات الرئيسية التي يتم تمريرها إلى مُنشئ OrderedDict، راجع PEP-468.
  • يمكننا استخدام وظيفة reversed() مع OrderedDict لتكرار العناصر بترتيب عكسي.
  • اختبارات المساواة بين كائنات OrderedDict حساسة للترتيب وتُنفذ كـ list(od1.items())==list(od2.items()).
  • اختبارات المساواة بين OrderedDict وكائنات Mapping الأخرى غير حساسة للترتيب مثل القواميس العادية. يتيح ذلك استبدال كائنات OrderedDict في أي مكان يُستخدم فيه القاموس العادي.

أمثلة Python OrderedDict

لنلقي نظرة على بعض أمثلة الشيفرة لـ Python OrderedDict.

إنشاء كائن OrderedDict

from collections import OrderedDict

# إنشاء قاموس بسيط
my_dict = {'kiwi': 4, 'apple': 5, 'cat': 3}

# إنشاء قاموس مرتب فارغ
ordered_dict = OrderedDict()
print(ordered_dict)

# إنشاء قاموس مرتب من قاموس
ordered_dict = OrderedDict(my_dict)
print(ordered_dict)

الناتج:

OrderedDict()
OrderedDict([('kiwi', 4), ('apple', 5), ('cat', 3)])

إضافة، استبدال، إزالة العناصر من OrderedDict

# إضافة عناصر إلى القاموس
ordered_dict['dog'] = 3

# استبدال قيمة مفتاح القاموس
ordered_dict['kiwi'] = 10
print(ordered_dict)

# إزالة وإضافة قيمة
ordered_dict.pop('kiwi')
print(ordered_dict)
ordered_dict['kiwi'] = 4
print(ordered_dict)

الناتج:

OrderedDict([('kiwi', 10), ('apple', 5), ('cat', 3), ('dog', 3)])
OrderedDict([('apple', 5), ('cat', 3), ('dog', 3)])
OrderedDict([('apple', 5), ('cat', 3), ('dog', 3), ('kiwi', 4)])

OrderedDict مثال على move_to_end

# نقل التفاح إلى النهاية والكلب إلى البداية
ordered_dict.move_to_end('apple')
ordered_dict.move_to_end('dog', False)
print(ordered_dict)

الناتج:

OrderedDict([('dog', 3), ('cat', 3), ('kiwi', 4), ('apple', 5)])

OrderedDict مثال على popitem

# استخراج العنصر الأخير
item = ordered_dict.popitem(True)
print(item)
print(ordered_dict)

الناتج:

('apple', 5)
OrderedDict([('dog', 3), ('cat', 3), ('kiwi', 4)])

التكرار العكسي ل OrderedDict

# التكرار العكسي
for item in reversed(ordered_dict):
    print(item)

الناتج:

kiwi
cat
dog

مثال اختبارات مساواة OrderedDict

# اختبارات المساواة
d1 = {'a': 'A', 'b': 'B'}
d2 = {'b': 'B', 'a': 'A'}

od1 = OrderedDict({'a': 'A', 'b': 'B'})
od2 = OrderedDict({'b': 'B', 'a': 'A'})

print(d1 == d2)
print(od1 == od2)
print(d1 == od1)

الناتج:

True
False
True

يمكنك تحميل الشفرة المثالية الكاملة من مستودعنا على GitHub.

المرجع: مستندات بايثون

Source:
https://www.digitalocean.com/community/tutorials/python-ordereddict