מילונים בשפת פייתון
מילון (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 כוכבים
המדריכים באתר עוסקים בנושאי תכנות ופיתוח אישי. הקוד שמוצג משמש להדגמה ולצרכי לימוד. התוכן והקוד המוצגים באתר נבדקו בקפידה ונמצאו תקינים. אבל ייתכן ששימוש במערכות שונות, דוגמת דפדפן או מערכת הפעלה שונה ולאור השינויים הטכנולוגיים התכופים בעולם שבו אנו חיים יגרום לתוצאות שונות מהמצופה. בכל מקרה, אין בעל האתר נושא באחריות לכל שיבוש או שימוש לא אחראי בתכנים הלימודיים באתר.
למרות האמור לעיל, ומתוך רצון טוב, אם נתקלת בקשיים ביישום הקוד באתר מפאת מה שנראה לך כשגיאה או כחוסר עקביות נא להשאיר תגובה עם פירוט הבעיה באזור התגובות בתחתית המדריכים. זה יכול לעזור למשתמשים אחרים שנתקלו באותה בעיה ואם אני רואה שהבעיה עקרונית אני עשוי לערוך התאמה במדריך או להסיר אותו כדי להימנע מהטעיית הציבור.
שימו לב! הסקריפטים במדריכים מיועדים למטרות לימוד בלבד. כשאתם עובדים על הפרויקטים שלכם אתם צריכים להשתמש בספריות וסביבות פיתוח מוכחות, מהירות ובטוחות.
המשתמש באתר צריך להיות מודע לכך שאם וכאשר הוא מפתח קוד בשביל פרויקט הוא חייב לשים לב ולהשתמש בסביבת הפיתוח המתאימה ביותר, הבטוחה ביותר, היעילה ביותר וכמובן שהוא צריך לבדוק את הקוד בהיבטים של יעילות ואבטחה. מי אמר שלהיות מפתח זו עבודה קלה ?
השימוש שלך באתר מהווה ראייה להסכמתך עם הכללים והתקנות שנוסחו בהסכם תנאי השימוש.