Python OrderedDict

Python OrderedDict הוא תת-מחלקת של dict השומרת על סדר ההכנסה של הפריטים. כאשר אנו עוברים על OrderedDict, הפריטים מוחזרים בסדר שבו התווספו. מילון רגיל לא מעקב אחרי סדר ההכנסה. כך שכאשר אנו עוברים עליו, הפריטים מוחזרים בסדר כלשהו. כאשר אנו רוצים לוודא שהפריטים מוחזרים בסדר שבו התווספו, אנו יכולים להשתמש ב-OrderedDict.

Python OrderedDict

  • OrderedDict הוא חלק ממודול collections של פייתון.
  • אנו יכולים ליצור OrderedDict ריק ולהוסיף לו פריטים. אם יצרנו OrderedDict על ידי מעבר לו של מחלקת dict, אזי יתכן שהסדר יאבד מכיוון ש-mdict לא שומרת על סדר ההכנסה.
  • אם פריט מוחלף ב-OrderedDict, מקום הפריט נשמר.
  • אם פריט נמחק ונוסף שוב, אזי הוא יעבור לסוף.
  • OrderedDict popitem מסיר את הפריטים לפי FIFO. הוא מקבל ארגומנט בוליאני last, אם הוא מוגדר ל-True, אז הפריטים מוחזרים לפי LIFO.
  • אנחנו יכולים להעביר פריט להתחלה או לסוף של OrderedDict באמצעות פונקציית move_to_end. היא מקבלת ארגומנט בוליאני last, אם הוא מוגדר ל־False אז הפריט מועבר להתחלת המילון המסודר.
  • מגרסה 3.6 של פייתון והלאה, הסדר נשמר עבור ארגומנטי מפתח שנשלחים לבנאי של OrderedDict, ראו PEP-468.
  • אנחנו יכולים להשתמש בפונקציית reversed() עם OrderedDict כדי לעבור על האיברים בסדר הפוך.
  • בדיקות שוויון בין עצמים של OrderedDict רגישות לסדר ומיושמות כ־list(od1.items())==list(od2.items()).
  • בדיקות שוויון בין OrderedDict לעצמים מפה אחרים אינן רגישות לסדר כמו במילונים רגילים. זה מאפשר ל־OrderedDict להחליף מקום כלשהו שבו משמש מילון רגיל.

דוגמאות ל־Python OrderedDict

בואו נסתכל על כמה דוגמאות לקוד של 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 שלנו.

הפנייה: מסמכי Python

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