User Tools

Site Tools


tanszek:oktatas:muszaki_informatika:adatszerkezetek_ii._dict_set_gyakorlo_feladatok

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
tanszek:oktatas:muszaki_informatika:adatszerkezetek_ii._dict_set_gyakorlo_feladatok [2026/02/19 19:49] szabomtanszek:oktatas:muszaki_informatika:adatszerkezetek_ii._dict_set_gyakorlo_feladatok [2026/02/19 19:56] (current) szabom
Line 47: Line 47:
 print(adat) print(adat)
 </sxh> </sxh>
- 
  
 **Dictionary bejárása** **Dictionary bejárása**
Line 78: Line 77:
 </sxh> </sxh>
  
 +==== Dict fő metódusai ====
 +^ Metódus                          ^ Funkció                                                    | Példa                |
 +| dict.keys()                      | Visszaadja a kulcsok listáját (view object)                | d.keys()             |
 +| dict.values()                    | Visszaadja az értékek listáját                             | d.values()           |
 +| dict.items()                     | Visszaadja a kulcs-érték párokat                           | d.items()            |
 +| dict.get(key[, default])         | Visszaadja a kulcshoz tartozó értéket, ha nincs → default  | d.get("x", 0)        |
 +| dict.pop(key[, default])         | Törli a kulcsot és visszaadja az értékét                   | d.pop("x"          |
 +| dict.popitem()                   | Törli és visszaad egy tetszőleges kulcs-érték párt         | d.popitem()          |
 +| dict.update([other])             | Másik szótár vagy iterable alapján frissít                 | d.update({"y":10})   |
 +| dict.clear()                     | Törli az összes elemet                                     | d.clear()            |
 +| dict.setdefault(key[, default])  | Ha nincs kulcs, létrehozza alapértelmezett értékkel        | d.setdefault("x",0)  |
 +| dict.copy()                      | Felületes másolat készít                                   | d2 = d.copy()        |
  
 ---- ----
 ==== Set alapjai ==== ==== Set alapjai ====
-Set: egyedi elemek gyűjteménye.+Set: egyedi elemek gyűjteménye, halmaza.
   * Nincs indexelés   * Nincs indexelés
   * Nem tartalmaz duplikációt   * Nem tartalmaz duplikációt
Line 101: Line 112:
 print("Egyedi elemek:", egyedi) print("Egyedi elemek:", egyedi)
 </sxh> </sxh>
 +
 +==== Set fő metódusai ====
 +
 +^ set.add(x)                       ^ Hozzáad egy elemet                           | s.add(5)                       |
 +| set.update(iterable)             | Több elemet ad hozzá                         | s.update([1,2,3])              |
 +| set.remove(x)                    | Eltávolítja az elemet (ha nincs → KeyError)  | s.remove(2)                    |
 +| set.discard(x)                   | Eltávolítja az elemet, ha van (hiba nélkül)  | s.discard(2)                   |
 +| set.pop()                        | Eltávolít egy tetszőleges elemet             | s.pop()                        |
 +| set.clear()                      | Összes elem törlése                          | s.clear()                      |
 +| set.copy()                       | Felületes másolat                            | s2 = s.copy()                  |
 +| set.union(other)                 | Egyesítés                                    | s.union({4,5})                 |
 +| set.intersection(other)          | Metszet                                      | s.intersection({2,3})          |
 +| set.difference(other)            | Különbség                                    | s.difference({1,2})            |
 +| set.symmetric_difference(other)  | Szimmetrikus különbség                       | s.symmetric_difference({1,2})  |
 +| set.issubset(other)              | Részhalmaz-e                                 | s.issubset({1,2,3})            |
 +| set.issuperset(other)            | Felülhalmaz-e                                | s.issuperset({1})              |
  
  
Line 106: Line 133:
 ==== Összefoglaló feladatok ==== ==== Összefoglaló feladatok ====
  
-Írj programot, ami:+**1. feladat** Írj programot, ami:
   * Bekér 5 nevet   * Bekér 5 nevet
   * Minden névhez bekér egy pontszámot   * Minden névhez bekér egy pontszámot
Line 130: Line 157:
 </sxh> </sxh>
  
 +**2. feladat:** Van egy dict, ahol a kulcs a diák neve, az érték egy set az általa elvégzett tantárgyak jegyeivel.
 +  * Adj hozzá egy új tantárgyat minden diáknak
 +  * Ellenőrizd, hogy van-e 5-ös jegye minden diáknak
 +  * Számold meg, hány diák kapott 1-es jegyet
 <sxh python> <sxh python>
 +diakok = {
 +    "Anna": {5, 4, 3},
 +    "Bence": {2, 3, 5},
 +    "Csaba": {1, 2, 3}
 +}
  
-</sxh>+# Új tantárgy 4-es jeggyel minden diáknak 
 +for nev, jegyek in diakok.items(): 
 +    jegyek.add(4)
  
-<sxh python>+# Ellenőrzés: van-e 5-ös jegy 
 +for nev, jegyek in diakok.items(): 
 +    if 5 in jegyek: 
 +        print(f"{nev} kapott 5-öst")
  
 +# 1-es jegyek száma
 +egyessel = sum(1 in jegyek for jegyek in diakok.values())
 +print("1-es jegyet kapott diákok száma:", egyessel)
 </sxh> </sxh>
  
 +**3. feladat:**  Van egy bolt dict-ben a termékek és mennyiségek formájában.
 +  * Egy új szállítmány érkezik egy másik dict-ből → frissítsd a raktárt
 +  * Távolítsd el azokat a termékeket, amelyek elfogytak (0)
 +  * Írd ki a teljes készletet 
 <sxh python> <sxh python>
 +raktar = {"alma": 10, "korte": 5, "banan": 0}
 +szallitas = {"alma": 5, "banan": 7, "narancs": 3}
  
-</sxh> +# Raktár frissítése 
-<sxh python>+for termek, db in szallitas.items(): 
 +    raktar[termek] = raktar.get(termek, 0) + db
  
 +# Elfogyott termékek törlése
 +torlendo = [k for k,v in raktar.items() if v == 0]
 +for k in torlendo:
 +    raktar.pop(k)
 +
 +print("Aktuális készlet:", raktar)
 </sxh> </sxh>
  
 +**4. feladat:** Adott két set a bolt A és B kínálatával.
 +  * Írd ki, mely termékek vannak mindkét boltban (metszet)
 +  * Melyek vannak csak az egyik boltban (szimmetrikus különbség)
 +  * Egyesítsd a készleteket 
 <sxh python> <sxh python>
 +boltA = {"alma", "banan", "narancs"}
 +boltB = {"korte", "banan", "narancs", "szilva"}
  
 +print("Mindkettőben:", boltA.intersection(boltB))
 +print("Csak az egyikben:", boltA.symmetric_difference(boltB))
 +boltA.update(boltB)
 +print("Összes termék:", boltA)
 </sxh> </sxh>
  
 +**5. feladat:**Egy dict dolgozó neve → set projektek.
 +  * Adj hozzá új projektet minden dolgozónak
 +  * Töröld azokat a projekteket, amelyeken senki sem dolgozik
 +  * Írd ki a dolgozónkénti projektlistát 
 <sxh python> <sxh python>
 +dolgozok = {
 +    "Eva": {"A", "B"},
 +    "Gabor": {"B", "C"},
 +    "Ilona": {"C"}
 +}
 +
 +# Új projekt D mindenkihez
 +for projektek in dolgozok.values():
 +    projektek.add("D")
 +
 +# Ellenőrizzük, mely projektek senkinél sem szerepelnek
 +osszes = set().union(*dolgozok.values())
 +nem_aktiv = {"E", "F"} - osszes
 +print("Nem aktív projektek:", nem_aktiv)
  
 +print("Dolgozók projektjei:")
 +for nev, projektek in dolgozok.items():
 +    print(nev, ":", projektek)
 </sxh> </sxh>
  
 +6. feladat: Adott egy szöveg string.
 +  * Készíts dict-et, ahol a kulcs a szó, az érték a darabszám
 +  * Távolítsd el a ritkán előforduló szavakat (pl. egyszer előforduló)
 +  * Írd ki a leggyakoribb szót
 <sxh python> <sxh python>
 +szoveg = "python lista ciklus python python adatszerkezet lista ciklus"
  
 +szavak = szoveg.split()
 +szavak_szam = {}
 +
 +for szo in szavak:
 +    szavak_szam[szo] = szavak_szam.get(szo, 0) + 1
 +
 +# Ritka szavak törlése
 +for szo in list(szavak_szam.keys()):
 +    if szavak_szam[szo] == 1:
 +        szavak_szam.pop(szo)
 +
 +# Leggyakoribb szó
 +leggyakoribb = max(szavak_szam, key=szavak_szam.get)
 +print("Leggyakoribb szó:", leggyakoribb)
 +print("Szó előfordulások:", szavak_szam)
 </sxh> </sxh>
 +
  
  
tanszek/oktatas/muszaki_informatika/adatszerkezetek_ii._dict_set_gyakorlo_feladatok.1771530576.txt.gz · Last modified: 2026/02/19 19:49 by szabom