שיעורי מודול (3/4)
מילונים
מילון (dict) הוא מפת מפתח → ערך: אתה משייך מפתח
(כמעט תמיד מחרוזת) עם ערך מכל סוג שהוא. זה היסוד
מבנה נתונים למידול ישויות בעולם האמיתי.
יצירת מילון
vuoto = {}
utente = {"nome": "Ada", "anni": 36, "attivo": True}
# costruttore alternativo
utente = dict(nome="Ada", anni=36, attivo=True)המפתחות חייבים להיות ניתנים לגיבוש (בלתי ניתנים לשינוי): מחרוזות, מספרים, טפולים של ניתנים לגיבוש אלמנטים. ערכים, לעומת זאת, יכולים להיות כל דבר - אפילו תכתיבים אחרים.
גישה, שנה, מחק
utente["nome"] # 'Ada'
utente["email"] # KeyError!
utente.get("email") # None (default sicuro)
utente.get("email", "—") # '—' (default custom)
utente["citta"] = "Roma" # aggiunge / aggiorna
del utente["attivo"] # rimuoveחוזר על הכתבה
for chiave in utente: # itera sulle CHIAVI (default)
print(chiave, utente[chiave])
for chiave in utente.keys(): # esplicito
...
for valore in utente.values():
print(valore)
for chiave, valore in utente.items(): # idiom più comune
print(f"{chiave} = {valore}")סדר האיטרציה הוא סדר ההכנסה (מובטח מאז Python 3.7 והלאה).
האם המפתח קיים?
"nome" in utente # True
"email" in utente # False (NON usa il valore, usa la chiave!)setdefault: אתחול בגישה הראשונה
דפוס תכוף: "אם המפתח אינו קיים, הכנס את ברירת המחדל; בכל מקרה מחזיר את הערך הנוכחי".
gruppi = {}
for nome in ["Ada", "Linus", "Ada", "Grace", "Linus", "Ada"]:
gruppi.setdefault(nome, []).append(1)
# {'Ada': [1, 1, 1], 'Linus': [1, 1], 'Grace': [1]}יש גם collections.Counter למקרה הספציפי של ספירה (אנחנו
יראה את זה במודול stdlib).
איטרציה על מילונים
אתה יכול לחזור על מילון בכמה דרכים:
for k in d: לולאות על מקשים בלבד (התנהגות ברירת מחדל).for k, v in d.items(): לולאות על צמדי מפתח-ערך בו זמנית (שימושי ביותר).for v in d.values(): לולאות על ערכים בלבד.
נסה את זה
בהינתן `user = {'nome': 'Ada', 'anni': 36}`, הוסף את המפתח 'email' = 'ada@ex.com' ולאחר מכן הקצה ל-'email_or_default' את הערך של המפתח 'telefono' באמצעות .get עם ברירת המחדל 'sconosciuto'. הערך את 'email_or_default'.
הצג רמז
.get('telefono', 'sconosciuto') אינו מעלה KeyError.
הפתרון זמין לאחר 3 ניסיונות
סקירת התרגיל
בהינתן `מחירים = {'mela': 1.2, 'pera': 1.5, 'kiwi': 2.0}`, חשב את הסכום של כל הערכים והקצה אותו ל`סך הכל`. הערך 'סך הכל'.
הצג רמז
sum(prices.values()) מסכם את כל הערכים.
הפתרון זמין לאחר 3 ניסיונות
אתגר נוסף
Given the dictionary `user = {'name': 'Alice'}`, use the `.get()` method to retrieve the value of the key `'role'`. If the key does not exist, make it return the default value `'guest'`. Store the result in `user_role` and evaluate it.
הצג רמז
שיטת get מקבלת פרמטר שני כ-fallback: user.get('role', 'guest').
הפתרון זמין לאחר 3 ניסיונות