10. Lug‘at va to‘plam
Nazariya
Lug‘at (dict)
Lug‘at qiymatni kalit bo‘yicha saqlaydi:
yosh = {"Aziz": 16, "Vali": 17}
print(yosh["Aziz"]) # 16
yosh["Dilnoza"] = 16 # qo‘shish
print("Aziz" in yosh) # TrueYo‘q kalitni so‘rash xato beradi. Xavfsiz yo‘l — get:
print(yosh.get("Bobur", 0)) # 0, xato yo‘qSanash
Eng ko‘p uchraydigan ish — nima necha marta uchraganini sanash:
sanoq = {}
for harf in matn:
sanoq[harf] = sanoq.get(harf, 0) + 1To‘plam (set)
To‘plamda takror yo‘q va tartib saqlanmaydi:
a = {3, 1, 4, 1, 5} # {1, 3, 4, 5}
a.add(2)
print(4 in a) # True
print(len(set(sonlar))) # nechta har xil son borAmallar: | (birlashma), & (kesishma), - (ayirma).
Nega bu tez
Ro‘yxatda x in a — barcha elementni ko‘rib chiqadi, ya’ni n amal.
Lug‘at va to‘plamda esa bu bir amal. 100 000 ta element ustida
qidirish kerak bo‘lsa, farq million martaga yetadi.
if x in royxat: # sekin
if x in toplam: # tezAylanish
for kalit in yosh:
print(kalit, yosh[kalit])
for kalit, qiymat in yosh.items():
print(kalit, qiymat)
Misol
matn = input()
sanoq = {}
for harf in matn:
sanoq[harf] = sanoq.get(harf, 0) + 1
for harf, soni in sanoq.items():
print(harf, soni)
Mashq masalalari
| ✓ | Kod | Masala | Qiyinlik |
|---|---|---|---|
| PY10-1 | Har xil sonlar | Boshlang‘ich | |
| PY10-10 | Kim kelmadi? | Oson | |
| PY10-11 | Xaridlar savati | Oson | |
| PY10-12 | Anagramma guruhlari | O‘rta | |
| PY10-13 | Izomorf so‘zlar | O‘rta | |
| PY10-14 | Ketma-ket sonlar zanjiri | O‘rta | |
| PY10-15 | Kolleksiya uchun eng qisqa yo‘l | Qiyin | |
| PY10-2 | Eng ko‘p uchragan so‘z | Oson | |
| PY10-3 | Telefon kitobi | Oson | |
| PY10-4 | Umumiy sonlar | Oson | |
| PY10-5 | Harflar chastotasi | Boshlang‘ich | |
| PY10-6 | Yolg‘iz sonlar | Oson | |
| PY10-7 | Baholar jurnali | Oson | |
| PY10-8 | Takrorlanmas birinchi harf | Oson | |
| PY10-9 | Lug‘at bilan tarjima | Oson |