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

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

מילון (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 כוכבים

 

 

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

 

= 9 + 3

תמונת המגיב

אבי בתאריך: 23.07.2020

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