תחי ישראל - אין לנו ארץ אחרת

תחי ישראל -אין לנו ארץ אחרת

מילונים בשפת פייתון

 

מחבר:
בתאריך:

מילון (dictionary) הוא סוג משתנה שמחזיק אוסף של נתונים. בדומה לרשימות וטאפלים.

מילונים של פייתון

נגדיר את הפריטים במילון בתוך סוגריים מסולסלים:

car = {}

כל פריט במילון מורכב מצמד הכולל מפתח וערך (key-value).

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

car = {'name': 'BMW'}
  • המפתח הוא 'name' והערך הוא 'BMW'.

נדפיס את המילון:

print(car)
{'name': 'BMW'}

מה סוג המשתנה?

print(type(car))
class 'dict'

מילון יכול להכיל מספר פריטים:

car = {'name': 'BMW', 'has_sunroof': True, 'price': 190000}
  • את הפריטים נפריד בפסיק.
  • הערכים יכולים להיות ממגוון של סוגי משתנים: מחרוזת, מספרים, בוליאנים (True, False) ועוד.

כמה פריטים יש במילון?

print(len(car))
3

מהם הפריטים במילון?

print(car.items())
dict_items([('name', 'BMW'), ('has_sunroof', True), ('price', 190000)])

אילו מפתחות קיימים במילון?

print(car.keys())
dict_keys(['name', 'has_sunroof', 'price'])

ומה בנוגע לערכים?

print(car.values())
dict_values(['BMW', True, 190000])

הערכים במילון יכולים להיות רשימות, טופלים ואפילו מילונים.

נגדיר את הפריט features שהערך שלו הוא רשימה:

car = {'name': 'BMW', 'has_sunroof': True, 'price': 190000, 'features': ['Airbag', 'AC']}

ניתן לגשת לפריט באמצעות המפתח שלו.

כדי לקבל את הערך של 'name' מתוך המילון car:

print(car['name'])
BMW

וכדי לקבל את הערך של 'features' מתוך המילון:

print(car['features'])
['Airbag', 'AC']

במידה וננסה לשלוף מידע באמצעות מפתח שלא קיים במערך נקבל שגיאה:

print(car['engine'])
Traceback (most recent call last):  File "main.py",  in module
    print(car['engine'])
KeyError: 'engine'

כדי למנוע את הופעת השגיאה נשתמש במתודה get:

print(car.get('engine'))
None
  • המתודה מחזירה None כברירת מחדל במידה והמפתח לא קיים במילון.

ניתן גם להגדיר ערך ברירת מחדל שהמתודה get תחזיר במידה והפריט לא נמצא:

print(car.get('engine', 'Key does not exist'))
Key does not exist
  • חשוב! ניתן לחפש ערך באמצעות מפתח אבל ההיפך לא עובד. לא ניתן למצוא מפתח על פי ערך.

למילונים יכולים להיות מפתחות שהם מספרים שלמים:

my_cars = {1: 'BMW', 2: 'Mercedes', 3: 'Tesla'}
 
print(my_cars)
{1: 'BMW', 2: 'Mercedes', 3: 'Tesla'}

 

כיצד לשנות מילון קיים?

ניתן לערוך שינויים במילון קיים.

נוסיף פריט חדש למילון car:

car['color'] = 'Metallic gray'
print(car)
{'name': 'BMW', 'has_sunroof': True, 'price': 190000, 'features': ['Airbag', 'AC'], 'color':'Metallic gray'}

ניתן לערוך פריט ללא תיווך של מתודה:

car['color'] = 'Deep blue'
print(car)
{'name': 'BMW', 'has_sunroof': True, 'price': 190000, 'features': ['Airbag', 'AC'], 'color':'Deep blue'}

נוכל לערוך פריטים גם באמצעות המתודה update:

car.update({'price': 180000})

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

car.update({'price': 186000, 'has_sunroof': False})
{'name': 'BMW', 'has_sunroof': False, 'price': 186000, 'features': ['Airbag', 'AC'], 'color': 'Metallic gray'}

כדי למחוק פריטים נשתמש במתודה del:

del car['price']
print(car)
{'name': 'BMW', 'has_sunroof': False, 'features': ['Airbag', 'AC'], 'color': 'Deep blue'}

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

נמחוק את הפריט has_sunroof, ונשמור את ערכו לתוך משתנה:

has_sunroof = car.pop('has_sunroof')
print(car)
{'name': 'BMW', 'features': ['Airbag', 'AC'], 'color': 'Deep blue'}

הערך של המשתנה has_sunroof שיצרנו באמצעות pop הוא:

print(has_sunroof)
False

 

כיצד לעבור בלולאה על כל פריטי המילון?

לולאת for מאפשרת לנו לעבור על כל אחד מהפריטים במילון:

for key in car:
   print(key)
name
features
color

פייתון הדפיס רק את המפתחות.

כדי לקבל את המפתחות והערכים נוסיף משתנה:

for key, val in car.items():
   print(key, ':', val)
name : BMW
features : ['Airbag', 'AC']
color : Deep blue

לכל המדריכים בסדרה ללימוד פייתון

 

 

אהבתם? לא אהבתם? דרגו!

0 הצבעות, ממוצע 0 מתוך 5 כוכבים

 

 

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

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

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

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

השימוש שלך באתר מהווה ראייה להסכמתך עם הכללים והתקנות שנוסחו בהסכם תנאי השימוש.

הוסף תגובה חדשה

 

 

ענה על השאלה הפשוטה הבאה כתנאי להוספת תגובה:

מתי הוקמה המדינה?

 

תמונת המגיב

אבי בתאריך: 23.07.2020

מדריכים מצוינים, נשמח לכמה שיותר מדריכים מושקעים

תמונת המגיב

ליאור בתאריך: 20.11.2020

תודה רבה עוזר מאוד ללימוד

תמונת המגיב

כובע לבן בתאריך: 18.01.2021

פייתון ומתטמטיקה

תמונת המגיב

הצל שבאפילה בתאריך: 22.05.2021

אחלה מדריכים תודה רבה!

תמונת המגיב

ג'ירפה חמודה בתאריך: 17.08.2021

מדריכים מובנים ומעולים.
ממש תודה!!!

תמונת המגיב

יוגב בתאריך: 15.10.2021

מדריכים מעולים. תמשיך כך

תמונת המגיב

אייל בתאריך: 24.04.2022

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

תמונת המגיב

איתי בתאריך: 19.10.2022

מצוין! מסביר ממש טוב!

תמונת המגיב

יפה קורביץ בתאריך: 09.11.2022

ממש הסברים טובים. תודה רבה.

תמונת המגיב

אני בתאריך: 27.05.2023

מדריכים ממש מצוינים וברורים, תודה!

תמונת המגיב

איקס בתאריך: 02.11.2023

הסבר ברור וקל מאוד להבנה. נהנתי מאוד. תודה!

תמונת המגיב

צמח בתאריך: 28.02.2024

מערך מדהים. כל הכבוד. מסביר בצורה נפלאה.