User Tools

Site Tools


tanszek:oktatas:muszaki_informatika:adatszerkezetek_ii._dict_set_gyakorlo_feladatok

Adatszerkezetek II. – dict, set

Dictionary: kulcs–érték párok gyűjteménye, mint egy valódi szótár. Hasonlít a C nyelv struktúrájára.

  • Kapcsos zárójel: {}
  • Kulcs és érték kettősponttal elválasztva
  • Kulcsok egyediek
  • print(szemely[“nev”])

<sxh python> szemely = {

  "nev": "Anna",
  "kor": 25,
  "varos": "Budapest"

} </sxh>

Példa: Hozz létre egy dictionary-t saját adataiddal (név, kor, kedvenc szám). Írd ki külön a nevet. Írd ki az egész dictionary-t. <sxh python> adat = {

  "nev": "Anna",
  "kor": 20,
  "kedvenc_szam": 7

}

print(“Név:”, adat[“nev”]) print(“Teljes adat:”, adat) </sxh>

Módosítás és bővítés

  • Új kulcs hozzáadása
  • Érték módosítása

<sxh python> szemely[“kor”] = 26 szemely[“foglalkozas”] = “mérnök” </sxh>

Példa: Hozz létre egy üres dictionary-t. Kérd be a felhasználó nevét és életkorát. Tárold el dictionary-ben. Írd ki az eredményt. <sxh python> adat = {}

nev = input(“Név: ”) kor = int(input(“Kor: ”))

adat[“nev”] = nev adat[“kor”] = kor

print(adat) </sxh>

Dictionary bejárása

<sxh python> szemely = {“nev”: “Anna”, “kor”: 25}

for kulcs in szemely:

  print(kulcs, szemely[kulcs])
  

#Kulcs–érték együtt: for kulcs, ertek in szemely.items():

  print(kulcs, ertek)

</sxh>

Példa: Hozz létre egy dictionary-t 3 tantárggyal és jeggyel. Írd ki az átlagot. <sxh python> jegyek = {

  "matek": 4,
  "fizika": 5,
  "angol": 3

}

osszeg = 0 for ertek in jegyek.values():

  osszeg += ertek

atlag = osszeg / len(jegyek) print(“Átlag:”, atlag) </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: egyedi elemek gyűjteménye, halmaza.

  • Nincs indexelés
  • Nem tartalmaz duplikációt

<sxh python> szamok = {1, 2, 3, 3, 2} print(szamok) </sxh>

Példa: Kérj be 5 számot. Tárold el listában. Alakítsd át set-té. Írd ki az egyedi elemeket <sxh python> szamok = []

for i in range(5):

  szam = int(input("Adj meg egy számot: "))
  szamok.append(szam)

egyedi = set(szamok) print(“Egyedi elemek:”, egyedi) </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})

Összefoglaló feladatok

1. feladat Írj programot, ami:

  • Bekér 5 nevet
  • Minden névhez bekér egy pontszámot
  • Dictionary-ben tárolja
  • Kiírja a legmagasabb pontszámot elért nevet

<sxh python> eredmenyek = {}

for i in range(5):

  nev = input("Név: ")
  pont = int(input("Pontszám: "))
  eredmenyek[nev] = pont

max_nev = None max_pont = -1

for nev, pont in eredmenyek.items():

  if pont > max_pont:
      max_pont = pont
      max_nev = nev

print(“Legjobb eredmény:”, max_nev, max_pont) </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> diakok = {

  "Anna": {5, 4, 3},
  "Bence": {2, 3, 5},
  "Csaba": {1, 2, 3}

}

# Új tantárgy 4-es jeggyel minden diáknak for nev, jegyek in diakok.items():

  jegyek.add(4)

# 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>

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> raktar = {“alma”: 10, “korte”: 5, “banan”: 0} szallitas = {“alma”: 5, “banan”: 7, “narancs”: 3}

# Raktár frissítése 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>

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> 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>

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> 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>

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> 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>

tanszek/oktatas/muszaki_informatika/adatszerkezetek_ii._dict_set_gyakorlo_feladatok.txt · Last modified: 2026/02/19 19:56 by szabom