PYTHON PROGRAMOZÁS
11. Objektumok a szótárban

A SZÓTÁR összetett adattípus. kényelmesebbé teszi a munkánkat, ha LISTA helyett használjuk. 


01 Szótár szavai listával (TK. 85. old.)
(E
gyszerű magyar–angol szótár készítése LISTÁVAL.)

def szótáraz(magyar_szó):
szótár = [['nagy', 'big'], #Minden szópár egy kis lista.
                ['pici', 'tiny'],
                ['én', 'I'],
                ['foci', 'soccer'],
                ['ott', 'there'],
                ['szarvas', 'deer'],
                ['soha', 'never']]
for elem in szótár: #KERESÉS
    if elem[0] == magyar_szó:
        return elem[1]  #A return megszakítja a függvény futását, és visszatér a találattal.
return 'Nincs ilyen szó a szótárban.'
kérdezett_szó = None #Itt kezdődik a főprogram.
while kérdezett_szó != '':
    kérdezett_szó = input('Melyik magyar szóra vagy kíváncsi angolul? ')
    if kérdezett_szó != '': #A ciklus addig kérdez, amíg üres bemenetet nem kap.
        print(kérdezett_szó, 'keresésének eredménye:', szótáraz(kérdezett_szó))


02 Szótár szavai szótárral (TK. 85-86. old.)
(E
gyszerű magyar–angol szótár készítése SZÓTÁRRAL.)

szótár = {'nagy': 'big', #nem kis listák vannak, hanem megfeleltetés kulcs-érték párokkal
                'pici': 'tiny',
                'én': 'I',
                'foci': 'soccer',
                'ott': 'there',
                'szarvas': 'deer',
                'soha': 'never'}
#egy szó kikeresése: print(szótár['nagy']), nincs ciklus, nem használjuk a keresés típusalgoritmusát! 
kérdezett_szó = None
while kérdezett_szó != '':
    kérdezett_szó = input('Melyik magyar szóra vagy kíváncsi angolul? ')
    if kérdezett_szó != '':
        print(kérdezett_szó, 'keresésének eredménye:',
                 #szótár[kérdezett_szó]) helyett, hogy a nem létező szavakat is kezelje:
                 szótár.get(kérdezett_szó, 'Nincs ilyen szó.'))


A SZÓTÁRAKNAK csak a kulcsai között tudunk ilyen egyszerűen keresni.
Ha a magyar–angol szótárunkat angol–magyarrá alakítjuk, be kell járni a szótárat, ami alapesetben a kulcsokat teszi a ciklusváltozóba: for kulcs in szótár.
Ha az érték is kell, akkor a ciklus belsejében használhatjuk a szótár[kulcs] formát, de pythonosabb, ha egyszerre kérjük el a kulcsot és az értéket is a for kulcs, érték in szótár.items() sorral. 

LISTÁS megoldásnál egyszerűen szó[0] helyett szó[1]-et írunk, és fordítva.


MEGJEGYZÉS:

  • Egy szótár kulcsai között sosem lehet két azonos.
  • A szótár kulcsait visszakapjuk a szótár.keys(), az értékeket a szótár.values() függvénnyel – és ezek is bejárhatók, valamint használható velük az in operátor vagy a sum() függvény
  • A szótárak értékei maguk is lehetnek listák vagy szótárak, és a szótárak is tehetők listába
  • Létező szótárba a szótár['új kulcs'] = 'új érték'' utasítással vehető fel új érték, a szükségtelenné vált kulcs-érték pár törlésére pedig a del szótár['törlendő kulcs'] utasítás való.

03 Osztály tárolása SZÓTÁRAKAT TARTALMAZÓ LISTÁBAN és Dezső kora (TK. 87. old.)
(A szótárakban egy-egy objektum tulajdonságait tároljuk, amikre név szerint hivatkozhatunk.
A lista miatt viszont be kell járni, ami nem jó.)

osztály = [{'név': 'Noémi', 'nem': 'l', 'kor': 15},
                 {'név': 'Dezső', 'nem': 'f', 'kor': 17},
                 {'név': 'Gizella', 'nem': 'l', 'kor': 16},
                 {'név': 'Edömér', 'nem': 'f', 'kor': 16}]
for tag in osztály:
    if tag['név'] == 'Dezső':
        print(tag['kor'])


04 Osztály tárolása SZÓTÁRAKAT TARTALMAZÓ SZÓTÁRBAN és Dezső kora (TK. 88. old.)
(Nem lehet két azonos nevű diák!)

osztály = {'Noémi': {'nem': 'l', 'kor': 15},

                  'Dezső': {'nem': 'f', 'kor': 17},
                  'Gizella': {'nem': 'l', 'kor': 16},
                  'Edömér': {'nem': 'f', 'kor': 16}}
print(osztály['Dezső']['kor'])


05 Osztály átlagéletkora SZÓTÁRAKAT TARTALMAZÓ SZÓTÁRBAN (TK. 88. old. 1. feladat)

osztály = {'Noémi': {'nem': 'l', 'kor': 15},

                 'Dezső': {'nem': 'f', 'kor': 17},
                 'Gizella': {'nem': 'l', 'kor': 16},
                 'Edömér': {'nem': 'f', 'kor': 16}}
összeg = 0
for tag in osztály:
    összeg += osztály[tag]['kor'] #látjuk, hogy mit csinál a kód
print('Az osztály átlagéletkora', összeg/len(osztály), 'év.')


06 Fiúk és lányok SZÓTÁRAKAT TARTALMAZÓ SZÓTÁRBAN (TK. 88. old. 2. feladat)
(A lányok vannak többen, vagy a fiúk?) 

osztály = {'Noémi': {'nem': 'l', 'kor': 15},

                  'Dezső': {'nem': 'f', 'kor': 17},
                  'Gizella': {'nem': 'l', 'kor': 16},
                  'Edömér': {'nem': 'f', 'kor': 16}}
lányok = 0
for tag in osztály:
    if osztály[tag]['nem'] == 'l':
        lányok += 1
if lányok > len(osztály) - lányok:
    print('A lányok vannak többen.')
elif lányok < len(osztály) - lányok:
    print('A fiúk vannak többen.')
else:
    print('A fiúk pont annyian vannak, mint a lányok.')


07 Vonósnégyes SZÓTÁRAKAT TARTALMAZÓ SZÓTÁRBAN (TK. 88. old. )
(Előző lecke vonósnégyesének jelenléti íve szótárral.) 

ív = {'egyik hegedűs': [1, 1, 1, 1, 1],
        'másik hegedűs': [1, 1, 1, 1, 0],
        'brácsás': [1, 1, 0, 0, 0],
        'csellós': [0, 1, 1, 1, 1]}
for ember in ív:
    print(ember)

Készítsd el weboldaladat ingyen! Ez a weboldal a Webnode segítségével készült. Készítsd el a sajátodat ingyenesen még ma! Kezdd el