מילונים בשפת פייתון
מילון (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
תודה רבה עוזר מאוד ללימוד