17 / 59

Python Dictionaries

Lug'atlar (Dictionary) bilan tanishish

Python lug'ati (dictionary) — ro'yxatlar va kortejlarga o'xshash elementlar to'plami. Biroq, ro'yxatlar va kortejlardan farqli o'laroq, lug'atdagi har bir element kalit-qiymat juftligi (key-value pair, kalit va qiymatdan iborat).

Lug'at yaratish

Biz lug'atni kalit: qiymat juftliklarini figurali qavslar {} ichiga, vergul bilan ajratib joylashtirish orqali yaratamiz. Masalan,

example.py
# lug'at yaratish
country_capitals = {
  "Germany": "Berlin", 
  "Canada": "Ottawa", 
  "England": "London"
}

# lug'atni chop etish
print(country_capitals)

Natija

kod
{'Germany': 'Berlin', 'Canada': 'Ottawa', 'England': 'London'}

country_capitals lug'ati uchta elementga (kalit-qiymat juftligiga) ega, bunda 'Germany' — kalit, 'Berlin' esa unga berilgan qiymat va hokazo.

Python lug'ati

Lug'atdagi kalit-qiymat juftliklari

Eslatmalar:

  • Lug'at kalitlari o'zgarmas (immutable) bo'lishi kerak, masalan kortej, satr, integer va h.k. Ro'yxat kabi o'zgaruvchan (mutable) obyektlarni kalit sifatida ishlata olmaymiz.
  • Lug'atni Pythonning tayyor dict() funksiyasi yordamida ham yaratishimiz mumkin. Ko'proq bilish uchun Python dict() sahifasiga tashrif buyuring.

To'g'ri va noto'g'ri lug'atlar

Lug'at kalitlari o'zgarmas bo'lishi kerak

O'zgarmas obyektlar yaratilgandan so'ng o'zgartirilishi mumkin emas. Pythondagi ba'zi o'zgarmas obyektlar — integer, kortej va satr.

example.py
# to'g'ri lug'at
# kalit sifatida integer
my_dict = {1: "one", 2: "two", 3: "three"}

# to'g'ri lug'at
# kalit sifatida kortej
my_dict = {(1, 2): "one two", 3: "three"}

# noto'g'ri lug'at
# Xato: kalit sifatida ro'yxatdan foydalanishga ruxsat yo'q
my_dict = {1: "Hello", [1, 2]: "Hello Hi"}

# to'g'ri lug'at
# kalit sifatida satr, qiymat sifatida ro'yxat
my_dict = {"USA": ["Chicago", "California", "New York"]}

Bu misolda biz lug'atlar uchun kalit sifatida integer, kortej va satrlardan foydalandik. Kalit sifatida ro'yxatdan foydalanganimizda, ro'yxatning o'zgaruvchan (mutable) tabiati sababli xato xabari yuz berdi.

Eslatma: Lug'at qiymatlari, jumladan ro'yxat kabi o'zgaruvchan turlar ham, istalgan ma'lumot turida bo'lishi mumkin.

Lug'at kalitlari noyob (unique) bo'lishi kerak

Lug'atning kalitlari noyob bo'lishi kerak. Agar takrorlanuvchi kalitlar bo'lsa, kalitning keyingi qiymati oldingi qiymatning ustidan yoziladi.

example.py
hogwarts_houses = {
    "Harry Potter": "Gryffindor",
    "Hermione Granger": "Gryffindor",
    "Ron Weasley": "Gryffindor",
    # boshqa uy bilan takrorlangan kalit
    "Harry Potter": "Slytherin"
}

print(hogwarts_houses)

Natija

kod
{'Harry Potter': 'Slytherin', 'Hermione Granger': 'Gryffindor', 'Ron Weasley': 'Gryffindor'}

Bu yerda, Harry Potter kaliti avval Gryffindorga bog'lanadi. Biroq, Harry Potter Slytheringa bog'langan ikkinchi yozuv ham bor.

Lug'atda takrorlanuvchi kalitlarga ruxsat berilmagani uchun, oxirgi yozuv Slytherin oldingi qiymat Gryffindorning ustidan yoziladi.

Lug'at elementlariga murojaat qilish

Lug'at elementining qiymatiga kalitni kvadrat qavslar ichiga joylashtirish orqali murojaat qilishimiz mumkin.

example.py
country_capitals = {
  "Germany": "Berlin", 
  "Canada": "Ottawa", 
  "England": "London"
}

# kalitlarning qiymatiga murojaat qilish
print(country_capitals["Germany"])    # Natija: Berlin
print(country_capitals["England"])    # Natija: London

Eslatma: Lug'at elementlariga murojaat qilish uchun get() metodidan ham foydalanishimiz mumkin.

Lug'atga elementlar qo'shish

Yangi kalitga qiymat berish orqali lug'atga element qo'shishimiz mumkin. Masalan,

example.py
country_capitals = {
  "Germany": "Berlin", 
  "Canada": "Ottawa", 
}

# kaliti "Italy" va qiymati "Rome" bo'lgan elementni qo'shish
country_capitals["Italy"] = "Rome"

print(country_capitals)

Natija

kod
{'Germany': 'Berlin', 'Canada': 'Ottawa', 'Italy': 'Rome'}

Lug'at elementlarini o'chirish

Lug'atdan elementni o'chirish uchun del operatoridan foydalanishimiz mumkin. Masalan,

example.py
country_capitals = {
  "Germany": "Berlin", 
  "Canada": "Ottawa", 
}

# "Germany" kalitiga ega elementni o'chirish
del country_capitals["Germany"]

print(country_capitals)

Natija

kod
{'Canada': 'Ottawa'}

Eslatma: Lug'atdan elementni o'chirish uchun pop() metodidan ham foydalanishimiz mumkin.

Agar lug'atdagi barcha elementlarni bir vaqtning o'zida o'chirish kerak bo'lsa, clear() metodidan foydalanishimiz mumkin.

example.py
country_capitals = {
  "Germany": "Berlin", 
  "Canada": "Ottawa", 
}

# lug'atni tozalash
country_capitals.clear()

print(country_capitals)  

Natija

kod
{}

Lug'at elementlarini o'zgartirish

Python lug'atlari o'zgaruvchan (mutable). Uning kalitiga murojaat qilish orqali lug'at elementining qiymatini o'zgartirishimiz mumkin. Masalan,

example.py
country_capitals = {
  "Germany": "Berlin", 
  "Italy": "Naples", 
  "England": "London"
}

# "Italy" kalitining qiymatini "Rome"ga o'zgartirish
country_capitals["Italy"] = "Rome"

print(country_capitals)

Natija

kod
{'Germany': 'Berlin', 'Italy': 'Rome', 'England': 'London'}

Eslatma: Lug'at elementlarini qo'shish yoki o'zgartirish uchun update() metodidan ham foydalanishimiz mumkin.

Lug'at bo'ylab aylanib chiqish

Lug'at — tartiblangan elementlar to'plami (Python 3.7'dan boshlab), shuning uchun u o'z elementlarining tartibini saqlaydi.

for sikli yordamida lug'at kalitlari bo'ylab birma-bir aylanib chiqishimiz mumkin.

example.py
country_capitals = {
  "United States": "Washington D.C.", 
  "Italy": "Rome" 
}

# lug'at kalitlarini birma-bir chop etish
for country in country_capitals:
    print(country)

print()

# lug'at qiymatlarini birma-bir chop etish
for country in country_capitals:
    capital = country_capitals[country]
    print(capital)

Natija

kod
United States
Italy

Washington D.C.
Rome

Lug'at uzunligini topish

len() funksiyasi yordamida lug'atning uzunligini topishimiz mumkin.

example.py
country_capitals = {"England": "London", "Italy": "Rome"}

# lug'at uzunligini olish
print(len(country_capitals))   # Natija: 2

numbers = {10: "ten", 20: "twenty", 30: "thirty"}

# lug'at uzunligini olish
print(len(numbers))            # Natija: 3

countries = {}

# lug'at uzunligini olish
print(len(countries))          # Natija: 0

Python lug'at metodlari

Mana keng ishlatiladigan ba'zi lug'at metodlari.

FunksiyaTavsif
pop()Belgilangan kalitga ega elementni o'chiradi.
update()Lug'at elementlarini qo'shadi yoki o'zgartiradi.
clear()Lug'atdan barcha elementlarni o'chiradi.
keys()Lug'atning barcha kalitlarini qaytaradi.
values()Lug'atning barcha qiymatlarini qaytaradi.
get()Belgilangan kalitning qiymatini qaytaradi.
popitem()Oxirgi qo'shilgan kalit va qiymatni kortej sifatida qaytaradi.
copy()Lug'atning nusxasini qaytaradi.

Lug'atda a'zolikni tekshirish

in va not in operatorlari yordamida lug'atda kalit mavjud yoki yo'qligini tekshirishimiz mumkin.

example.py
file_types = {
    ".txt": "Text File",
    ".pdf": "PDF Document",
    ".jpg": "JPEG Image",
}

# in va not in operatorlaridan foydalanish
print(".pdf" in file_types)       # Natija: True
print(".mp3" in file_types)       # Natija: False
print(".mp3" not in file_types)   # Natija: True

Eslatma: in operatori kalit mavjudligini tekshiradi; u qiymat mavjud yoki yo'qligini tekshirmaydi.

QBilimingizni sinab ko'ring
1 / 3

1. Lug'at (dictionary) ro'yxat va kortejdan nimasi bilan farq qiladi?