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