PracticU

Dictionary

בלי כתוביותעם כתוביות
PracticU › קורס פייתון - Python › Dictionary
מילון מושגים:
Dictionary - מבנה נתונים שמאחסן זוגות של מפתח וערך, ומאפשר שליפה מהירה של ערך לפי מפתחו.
אינדקס - מבנה במסד נתונים שמאיץ חיפוש ושליפה. גם מספר המציין מיקום של איבר במערך.
פונקציה - קטע קוד בעל שם שמבצע משימה מוגדרת, מקבל ערכי קלט (פרמטרים) ויכול להחזיר תוצאה. מאפשרת לארגן קוד ולהשתמש בו שוב.
מחרוזת - סוג נתונים שמייצג רצף של תווים, כלומר טקסט, ומשמש לאחסון מילים, משפטים או כל רצף סימנים.
Python - שפת תכנות עילית וקריאה, נפוצה בפיתוח, אוטומציה, ניתוח נתונים ולמידת מכונה.
אופרטור - סימן בקוד שמבצע פעולה על ערכים, כמו חיבור, השוואה או פעולה לוגית.

Dictionary
השיעור מציג את הטאפל ואת המילון. הטאפל דומה לרשימה אך אינו ניתן לשינוי, והמילון הוא מבנה מפתח-ערך שמאפשר לגשת לערכים במהירות.
השלבים העיקריים
1. טאפל: מגדירים בסוגריים עגולים. ניתן לגשת לאיברים לפי אינדקס ולחתוך אותם, אבל אין פעולות כמו append או השמה לאינדקס. טאפל תופס פחות מקום מרשימה, ולכן מחזירים בו ערכים מפונקציות.
2. טאפל עם רשימה בתוכו: הטאפל עצמו לא משתנה, אבל הרשימה שבתוכו כן. לכן אפשר להוסיף איברים לרשימה שבתוך הטאפל.
3. מילון: מוגדר בסוגריים מסולסלים עם זוגות מפתח וערך. המפתחות יכולים להיות מחרוזות או מספרים.
4. פעולות על מילון: dir מציג את הפעולות, כולל keys, values ו-update. השמה לערך חדש מוסיפה מפתח, ו-del מוחק מפתח.
5. העתקה: השמה b = a אינה יוצרת עותק. כדי לקבל עותק נפרד משתמשים בפונקציה copy.
6. ספירת הופעות: הדוגמה המרכזית עוברת על רשימה וסופרת כמה פעמים מופיע כל ערך. בכל איבר בודקים אם הוא כבר במילון: אם כן, מוסיפים 1 לערך, ואם לא, יוצרים אותו עם הערך 1.
טעויות נפוצות
- אין פעולת append לטאפל. ניסיון לשנות את הטאפל עצמו מוביל לשגיאה.
- ב-Python ההזחה קובעת את הבלוקים, ולא סוגריים מסולסלים. ערבוב של טאבים ורווחים גורם לשגיאה, ולכן מומלץ להשתמש בארבעה רווחים בכל הקוד.
שימו לב
האופרטור in נתמך במחרוזות, במילונים וברשימות. בדיקה אם מפתח נמצא במילון נעשית כך: key in d.
המילון והטאפל הם כלים בסיסיים לכל תוכנית Python.
השיעור הבא בקורס: Mutable - יתרונות וחסרונות

פרקי ההרצאה: Dictionary

  1. 00:00

    מבוא לטאפלים: מבנה שלא ניתן לשינוי

  2. 01:04

    הבדל בין טאפל לליסט: אי אפשר לשנות

  3. 03:10

    טאפל שמכיל רשימה: מה כן ניתן לשנות

  4. 05:20

    מילונים (Dictionary): מבנה Key Value

  5. 06:51

    הגדרת מילון ראשון ופעולות בסיסיות

  6. 07:57

    פונקציות מילון: keys, values ו-update

  7. 08:39

    הוספה ומחיקה של איברים במילון

  8. 09:09

    העתקת מילון באמצעות copy

תמלול ההרצאה: Dictionary

הטקסט המלא של הדקות הראשונות בהרצאה «Dictionary» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:03

    שלום לכולם, אנחנו נדבר עכשיו על טאפלים ודיקשנריז, שהם מבנה נתונים בסיסיים נוספים בשפת פייתון. אז בואו נתחיל, ניכנס לאינטרפרטר שלנו.

  2. 00:15

    מה זה טאפל? טאפל הוא ממש ממש דומה לליסט, כלומר הוא גם קונטיינר שמכיל מספר קונטיינרים נוספים בתוכו.

  3. 00:26

    ההבדל בין ליסט לטאפל, שטאפל לא יכול להשתנות לאחר שהוא נוצר. בואו נתחיל עם דוגמה פשוטה כדי להבין את הדבר. כדי להגדיר טאפל נעשה אותו דבר כמו ליסט פשוט נשתמש בסוגריים עגולים במקום סוגריים מרובעים למשל יש לנו עכשיו פה טאפל שמכיל את המספרים 1 עד 5 בוא נדפיס אותו ונראה איך הוא נראה על המסך

  4. 00:53

    נראה מאוד דומה לליסט אז כפי שאתם רואים אנחנו רואים על המסך את הטאפל שלנו והוא מאוד דומה לליסט נשאלת השאלה למה צריך הוא מאוד דומה לליסט והוא גם קונטיינר ההבדל הגדול בין טאפל לליסט שטאפל הוא לא ניתן לשינוי לאחר מה זאת אומרת? בואו ניקח לדוגמה ליסט שמכיל את הערכים 0 עד 5 אם עכשיו נרצה להוסיף ערך לליסט, פשוט נעשות

  5. 01:31

    b append נרצה להוסיף נגיד 6, נדפיס את b, ויש לנו את 6 לעומת זאת אם ננסה לעשות אותו דבר ל-a, נקבל שגיאה טאפל אובייקט has no attribute append כלומר אי אפשר בכלל, אין לו פונקציה שנקראת append אז בואו נגיד אוקיי, בואו פשוט נשתמש ננסה להשתמש באופרטור של הסוגריים

  6. 01:54

    אז a במקום ה-1 שווה 5 נקבל שגיאה אובייקט מסוג טאפל לא תומך בהשמה כלומר האובייקט טאפל הוא מאוד דומה לליסט אבל לא ניתן לשינוי מה היתרון של הדבר הזה?

  7. 02:11

    בעצם טאפל הוא מבנה שנמצא יותר בתור דברים שאפשר להחזיר מפונקציות כלומר פונקציה רוצה להחזיר איזשהו ערך והיא לא רוצה שישנו אותו אז היא מחזירה טאפל.

  8. 02:26

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

  9. 02:39

    חשוב לשים לב אבל, שלמרות שטאפל לא תומך בשינוי, כל האופרציות שראינו בעבר נתמכות בטאפל, למשל A במקום ה-0, או A במקום ה-1, כל עובד גם בטאפל, הזאת הוא תואם ליסט ב-100% שימו לב שגם פה אפשר לעשות dir על a ושימו לב שבעצם אין לו פונקציות חוץ מ-count ו-index כל הפונקציות שנמצאות בליסט של

  10. 03:07

    ה-reverse וה-index וה-insert לא קיימות בטאפל עכשיו נדבר על dictionaries רק לפני כן עוד משהו קטן על טאפלים לכאורה הייתם חושבים שטאפל זה קונסטנט אבל הדבר הזה לא מדויק כלומר הוא כן מדויק ואני אסביר מה קורה אם יש לנו טאפל שמכיל בתוכו ליסט?

  11. 03:34

    למשל, יש לנו את הטאפל A שמכיל בתוכו ליסט וק ומכיל בתוכו את המספר 5. גם, תכף נסביר גם למה שמנו את 5. אם נדפיס את A, לכאורה טאפל רגיל.

  12. 03:51

    ננסה לעשות השמה ל-A במקום ה-1 ולא נצליח. אבל מה יקרה אם ננסה להוסיף לליסט שנמצא בתוך הטאפל? האם זה ייתן לנו או לא?

  13. 04:06

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

  14. 04:18

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

  15. 04:43

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

  16. 05:02

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

  17. 05:25

    אז דיקשנריז או האש, מבנה נתונים שקיים ברוב השפות המודרניות, ג'אווה סקריפט ו-C-Sharp, ה-STL של C++, זה Key Value, כלומר זה שהוא מבנה נתונים שיש לנו Key, מפתח שמצביע על Value.

  18. 05:40

    איך מגדירים דיקשנרי בפייתון? מאוד פשוט, מאוד דומה לכל מה שראינו בעבר. בואו נגדיר d שווה ל-dictionary, איך מתחילים?

  19. 05:54

    פשוט משתמשים בסוגריים מסולסלים, קצת קשה לראות את זה בבאש הזה. בואו רגע נכתוב את זה בנוטפד פלוס פלוס, שזה ייראה יותר נורמלי.

  20. 06:07

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

  21. 06:36

    מסוסלים בואו גם כבר נעלה את המסך למעלה, נצא ונעשה תיקוי של המסך וניכנס שוב לפייתון ונתחיל לדבר קצת על Dictionaries אז כמו שאמרתי, Dictionaries זה מבנה נתונים של Key Value בואו נתחיל בהגדרה מאוד פשוטה של Dictionary אז נגיד שניצור דיקשנרי שנקרא לו a שווה לתחסוגר מסולסל

  22. 07:05

    ונגדיר דיקשנרי שמכיל בתוכו key של הסטרינג 1 מצביע על המספר 1 אז יש לנו דיקשנרי שיש לו key וvalue שימו לב שאפשר גם שה-key יהיה מסוג מספר כלומר 2 מצביע על 2 אין לנו איזושהי הגבלה שהקרבכות לא כרגע מה שאנחנו רואים שמשהו לא יכול להיות קי.

  23. 07:41

    דיקשנרי הוא מבנה נתונים שתומך בגישה מאוד מהירה, גישה ומחיקה ושינוי בזמן מאוד מהיר. מבחינת פונקציות שיש לנו בדיקשנרי, אז אם נשתמש ב-dir, נוכל לראות שיש לנו update שזה מעדכן, לוקח שני דיקשנריז ומעדכן ביניהם.

  24. 08:04

    נוכל לעשות a.keys ולראות את כל הדיקשנריז, את כל ה-keys של, כלומר כל המפתחות של. הדיקשנרי הזה ונוכל גם לעשות ווליוז ולראות את הערכים מבחינת דברים נוספים שכדאי לדעת על דיקשנרי אז דיקשנרי זה כמו ליסטים כמובן הם ניתנים לשינוי כדי לעשות השמה לתוך a למשל אני רוצה עכשיו להוסיף ערך חדש ל-a אז a במקום ה-3 שווה ל-3 ובעצם הוספנו ל-a אם אנחנו רוצים למחוק מ-a משהו אז אפשר לעשות del a במקום ה-3

  25. 08:50

    ומחקנו משהו מ-a עוד דברים שכדאי לדעת על dictionaries זה שיש פונקציה שנקראת copy אם רוצים לקחת dictionary ולשנות וליצור העתק שלו אז צריך שיש בפונקציה copy למה אי אפשר סתם לעשות שווה אני אסביר לכם בעזרת דוגמה מאוד פשוטה אז יש לנו את a ש-a שווה לדיקשנרי שאתם רואים על המסך בואו עכשיו ניצור דיקשנרי ששמו b ששווה

  26. 09:32

    לa עכשיו בעצם מה שעשינו פה עשינו שלו קופי מה זאת אומרת אם נעשה b במקום ה3 שווה 3 שינינו את b בהחלט האם שינינו גם את a כן עכשיו זה לא בהכרח מה שרצינו יכול להיות שמה שרצינו זה לשנות רק את b או רק את a כדי שיהיה לנו ערך שהוא ייחודי מה שצריך לעשות זה b בוא נעשה c שווה לb נקודה קופי עכשיו אם אם אנחנו נשנה את b,

  27. 10:13

    אז שינינו את b, שינינו את a, אבל c לא השתנה. אז מאוד חשוב לשים לב. התופעה הזאת קיימת גם בליסטים, אנחנו נדבר עליה בהרחבה בהמשך.

  28. 10:30

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

  29. 10:52

    למשל, בואו ניצור ליסט שמכיל 0, 1, 2, 3, 4, 5, 6, אותם איזשהו משהו.

לקורס המלא: קורס פייתון אונליין למתחילים

ההרצאה הקודמת: משתנים פייתון כולל List וגם String

ההרצאה הבאה: Mutable - יתרונות וחסרונות

הרצאות קשורות מקורסים אחרים

  • מילון - Dictionary - שפת Swift

קורסים נוספים במסלול

  • קורס יסודות התכנות - שפת JAVA - קורס ג'אווה למתחילים
  • קורס PHP - פרויקט מעשי