முக்கிய உள்ளடக்கத்திற்குச் செல்லவும்
தொகுதி 3 · பாடம் 3 இன் 4பாடத்திட்டத்தில் 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ஏற்றுகிறது…

கொடுக்கப்பட்ட `பயனர் = {'nome': 'Ada', 'anni': 36}`, 'email' = 'ada@ex.com' விசையைச் சேர்த்து, 'email_or_default` க்கு 'telefono' விசையின் மதிப்பை .get with default '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 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்