ప్రధాన కంటెంట్‌కు వెళ్లండి
మాడ్యూల్ 3 · 4లో పాఠం 3కోర్సులో 11/36~12 min
మాడ్యూల్ పాఠాలు (3/4)

నిఘంటువులు

నిఘంటువు (dict) అనేది కీ → విలువ మ్యాప్: మీరు కీని అనుబంధిస్తారు (దాదాపు ఎల్లప్పుడూ స్ట్రింగ్) ఏదైనా రకం విలువతో. ఇది ప్రాథమికమైనది వాస్తవ-ప్రపంచ ఎంటిటీలను మోడలింగ్ చేయడానికి డేటా నిర్మాణం.

నిఘంటువు సృష్టిస్తోంది

Python
vuoto = {}
utente = {"nome": "Ada", "anni": 36, "attivo": True}
# costruttore alternativo
utente = dict(nome="Ada", anni=36, attivo=True)

కీలు తప్పనిసరిగా హాషబుల్ (మారలేనివి): స్ట్రింగ్‌లు, నంబర్‌లు, టుపుల్స్ ఆఫ్ హ్యాషబుల్ అంశాలు. మరోవైపు, విలువలు ఏదైనా కావచ్చు — ఇతర ఆదేశాలు కూడా.

యాక్సెస్ చేయండి, సవరించండి, తొలగించండి

Python
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

ఒక శాసనం మీద మళ్ళా

Python
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}")

పునరావృత క్రమం ఇన్సర్షన్ ఆర్డర్ (పైథాన్ 3.7 నుండి హామీ ఇవ్వబడింది తరువాత).

కీ ఉనికిలో ఉందా?

Python
"nome" in utente     # True
"email" in utente    # False     (NON usa il valore, usa la chiave!)

setdefault: మొదటి యాక్సెస్‌లో ప్రారంభించండి

తరచుగా ఉండే నమూనా: "కీ ఉనికిలో లేకుంటే, డిఫాల్ట్‌ను ఏదైనా దానిలో ఉంచండి కేసు ప్రస్తుత విలువను తిరిగి ఇవ్వండి".

Python
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(): విలువలపై మాత్రమే లూప్‌లు.

దీనిని ప్రయత్నించండి

వ్యాయామం#python.m3.l3.e1
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

ఇచ్చిన `user = {'nome': 'Ada', 'anni': 36}`, 'email' = 'ada@ex.com' కీని జోడించి, ఆపై 'telefono' కీ విలువను .get డిఫాల్ట్ 'sconosciuto'ని ఉపయోగించి `email_or_default`కి కేటాయించండి. `ఇమెయిల్_లేదా_డిఫాల్ట్`ని మూల్యాంకనం చేయండి.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

.get('telefono', 'sconosciuto') KeyErrorని పెంచదు.

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది

వ్యాయామం సమీక్షించండి

వ్యాయామం#python.m3.l3.e2
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

ఇచ్చిన `ధరలు = {'మేళా': 1.2, 'పెరా': 1.5, 'కివి': 2.0}`, అన్ని విలువల మొత్తాన్ని లెక్కించి, దానిని `మొత్తం`కి కేటాయించండి. `మొత్తం`ని మూల్యాంకనం చేయండి.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

sum(prices.values()) అన్ని విలువలను జోడిస్తుంది.

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది

అదనపు సవాలు

వ్యాయామం#python.m3.l3.e3
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

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.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

గెట్ పద్ధతి రెండవ పరామితిని ఫాల్‌బ్యాక్‌గా అంగీకరిస్తుంది: user.get('role', 'guest').

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది