AXV

Dictionary: kalit va qiymat

Kalit bilan bir zumda topamiz va beshta tuzilmani bitta loyihada birlashtiramiz

9-sinfAdvanced Back-end va DevOps5-hafta · 15-dars

Bugun nimalarni o‘rganamiz?

Dict nima?

key: value juftliklar va 4 ta xususiyat

Murojaat va o‘zgartirish

d["key"], get(), yangilash, qo‘shish

Loyiha

«Talabalar ma’lumotlari»: 5 ta tuzilma birga

Kalit-qiymat hamma joyda

Lug‘at

so‘z -> tarjima
"book" -> "kitob"

Kontaktlar

ism -> raqam
"Ona" -> "+99890..."

Profil

maydon -> qiymat
"username" -> "ali_2011"

01

Dictionary nima?

key: value juftliklarda saqlanadigan tuzilma

Dict anatomiyasi (1.80-rasm)

user = { "name" "age" "city" key (kalit) : : : "Ali" 15 "Toshkent" value (qiymat) }

Dict xususiyatlari

Tez topiladi

Kalit orqali bir zumda

Mutable

Yangilash, qo‘shish, o‘chirish

Kalit unikal

Bir xil kalit ikki marta bo‘lmaydi

Tartib saqlanadi

Python 3.7+ da kiritilgan tartib

02

Murojaat va o‘zgartirish

d["key"], get(), yangilash va qo‘shish

Kalit orqali qiymat olish (1.81-rasm)


user = {"name": "Ali", "age": 15, "city": "Toshkent"}
print(user["name"])    # Ali
print(user["phone"])
        
KeyError: 'phone'
Kalit bo‘lmasa - xato, dastur to‘xtaydi.

Xatosiz yo‘l: get()

user["phone"]

Kalit yo‘q -> KeyError. Dastur shu joyda to‘xtaydi.

user.get("phone", "yo'q")

Kalit yo‘q -> "yo'q" qaytadi. Kod ishini to‘xtatmaydi.

Kalit aniq bor bo‘lsa [ ], bo‘lmasligi mumkin bo‘lsa get().

Yangilash va qo‘shish (1.82-rasm)


user = {"name": "Ali", "age": 15}
        

Yangilash va qo‘shish (1.82-rasm)


user = {"name": "Ali", "age": 15}
user["age"] = 23           # bor kalit: yangilanadi
user["phone"] = "+99890"   # yangi kalit: qo'shiladi
print(user)  # {'name': 'Ali', 'age': 23, 'phone': '+99890'}
        

d[key] = value: Python qanday qaror qiladi?

d["age"] = 23 "age" kaliti bormi? ha qiymat yangilanadi yo‘q yangi juftlik qo‘shiladi

Bashorat qiling

d = {"a": 1, "b": 2}; d["a"] = 10; d["c"] = 3. len(d) nimaga teng?

"a" yangilandi (yangi kalit emas), "c" qo‘shildi: {'a': 10, 'b': 2, 'c': 3}.

if/else zanjiri o‘rniga dict (1.88-rasm)


texts = {"uzl": "Salom!", "rus": "Привет!", "en": "Hello!"}
til = "en"
print(texts[til])   # Hello!
          

Yangi til qo‘shish - bitta qator. Taqqoslash uchun pastga

Xuddi shu - if/else bilan


if til == "uzl":
    print("Salom!")
elif til == "rus":
    print("Привет!")
elif til == "en":
    print("Hello!")
          
Variant ko‘paysa, kod uzun va chalkash bo‘ladi.
03

Beshta tuzilma birga

«Talabalar ma’lumotlari» loyihasi

Qaysi ma’lumot - qaysi tuzilmada?

stringism listfanlar tupletug‘ilgan yil setbaholar dict: talaba hammasi bitta joyda get()telefon?

Loyiha qadam-baqadam

1. string va list

ism = "Ali"; familiya = "Valiyev"
fanlar = ["Matematika", "Informatika"]
fanlar.append("Fizika")

2. tuple va set

shaxsiy = (2011, "AB1234567")
baholar = sorted(set([5, 4, 5, 5, 3]))
# [3, 4, 5]

3. dict ga jamlash

talaba = {"toliq_ism": ism + " " + familiya,
          "fanlar": fanlar, "shaxsiy": shaxsiy,
          "baholar": baholar}
talaba["sinf"] = "9-sinf"

4. Natijani chiqarish

print("Talaba:", talaba["toliq_ism"])
print("Yil:", talaba["shaxsiy"][0])
print("Tel:", talaba.get("telefon", "kiritilmagan"))

Kutiladigan natija

$ python3 talaba.py
Talaba: Ali Valiyev
Fanlar soni: 4
Tug'ilgan yil: 2011
Turli baholar: [3, 4, 5]
Telefon: kiritilmagan
Sinf: 9-sinf
0
tuzilma bitta dasturda
0
dars ortda qoldi

Beshta tuzilma: yakuniy xarita

TuzilmaKo‘rinishiO‘zgaradimi?Qachon
string"Ali"Yo‘qMatn, ism
list[1, 2, 3]HaTartibli ro‘yxat
tuple(41.3, 69.2)Yo‘qO‘zgarmas yozuv
set{5, 4}HaTakrorsiz to‘plam
dict{"ism": "Ali"}HaKalit bo‘yicha topish

Mini-test

O‘quvchining tug‘ilgan yili va guvohnoma raqami (o‘zgarmaydi) uchun eng mos tuzilma?

O‘zgarmas shaxsiy ma’lumot - tuple. Rasmiy loyiha talabi ham shunday.

Amaliy topshiriq 25 daqiqa

Osonism, yosh, shahar bilan dict yarating; telefon ni get() bilan oling.
O'rtaTil kodi bo‘yicha salomlashuv: texts.get(kod, "Til topilmadi").
Qiyin«Talabalar ma’lumotlari» loyihasini o‘z ma’lumotlaringiz bilan yozing, yangi kalit qo‘shing.

Xulosa

Bugun o‘rgandik

key: value, d["key"] va KeyError, get(), yangilash va qo‘shish. 5 ta tuzilma bitta loyihada.

Uyga vazifa

lugat.py va loyihani yakunlash: yangi fan va telefon kaliti.

Keyingi hafta: DRY prinsipi va funksiyalar - takroriy kodni bitta joyga yig‘amiz.