CodeGym /Kurslar /Python SELF AZ /Dictionary kolleksiyası

Dictionary kolleksiyası

Python SELF AZ
Səviyyə , Dərs
Mövcuddur

1.1 Dictionary və onun xüsusiyyətləri

Dictionary (sözlük) Python-da unikal açar-dəyər cütlərindən ibarət sıravi kolleksiyadır. Dictionary-də hər bir açar unikal olur. Dictionary-lər Python dilindəki ən çevik və güclü data tiplərindən biridir, və dataları saxlamaq və idarə etmək üçün istifadə olunur. Onlardan çox istifadə edəcəyik – o qədər çox ki, tezliklə özünüz digər tiplərlə müqayisədə dictionary istifadəsinə üstünlük verdiyimizi görəcəksiniz :)

Dictionary-lərin əsas xüsusiyyətləri:

1. Unikal açarlar

Dictionary-dəki hər bir açar unikal olmalıdır. Əgər artıq mövcud açar ilə yeni açar-dəyər cütu əlavə olunarsa, əvvəlki dəyər yenisi ilə əvəz edilər. Məsələn, tələbələr haqqında məlumat saxlamaq istəyirsinizsə, onların identifikatorlarını açar kimi istifadə edə bilərsiniz:


students = {"123": "John", "124": "Alice", "123": "Mike"}
print(students)  # Çapa veriləcək: {'123': 'Mike', '124': 'Alice'}

2. Sıralılıq

Vacib! Python 3.7 versiyasına qədər dictionary-lər sırasız kolleksiya sayılırdı, yəni elementlərin sırası təmin olunmurdu. Lakin Python 3.7-dən etibarən dictionary-lər əlavə olunma sırasını saxlayır. Python 3.8 ilə bu dəyişiklik artıq standart oldu.

Bu artıq 5 il əvvəl idi. Biz Python 3.12 versiyasını öyrənirik, ona görə də rahatlıqla dictionary-ləri sıralı elementlər kolleksiyası kimi qəbul edə bilərsiniz.

3. Dəyişiklik edilə bilənlik

Dictionary-lər dəyişkəndirlər, yəni onları yaradandan sonra elementlər əlavə edə, redaktə edə və ya silə bilərsiniz. Məsələn, tələbənin ünvanını əlavə edək:


student = {"name": "John", "age": 20}
student["address"] = "123 Main St"
print(student)  # Çapa veriləcək: {'name': 'John', 'age': 20, 'address': '123 Main St'}

4. Effektivlik

Dictionary-lər açar-dəyər cütlərini sürətli şəkildə tapmaq, əlavə etmək və silmək üçün optimallaşdırılıb. Axtarış, əlavə etmək və silmək əməliyyatları orta hesabla sabit vaxtda, O(1)-də həyata keçirilir. Algoritmlərin mürəkkəbliyi haqqında daha ətraflı "Algoritmlər və Data Strukturları" bölməsində öyrənəcəyik.

5. Açarlar və dəyərlər

Dictionary-dəki açarlar, dəyişdirilə bilməyən data tiplərindən biri olmalıdır, məsələn sətirlər, rəqəmlər və ya tuplar. Dəyərlər isə hər hansı bir data tipi ola bilir, hətta digər dictionary-lər də daxil olmaqla.

6. Elementlərə çıxış və dəyişiklik metodları

Dictionary-lər elementlərə çıxış, əlavə etmə, dəyişiklik və ya silmək üçün müxtəlif metodları dəstəkləyirlər. Bu metodlardan bəziləri: get(), keys(), values(), items(), update(), pop() və s. Daha ətraflı növbəti dərslərdə izah edəcəyik.

7. Elementlər üzərində iterasiya

Dictionary-dəki açarları, dəyərləri və ya açar-dəyər cütlərini dövrlər vasitəsilə iterasiya edə bilərsiniz. Bu, dictionary elementləri üzərində əməliyyatlar aparmağı asanlaşdırır. Məsələn:


student = {"name": "John", "age": 20, "address": "123 Main St"}
for key, value in student.items():
    print(f"{key}: {value}")

Nəticə belə olacaq:

name: John
age: 20
address: 123 Main St

8. Açarların hash-lik xüsusiyyəti

Dictionary-dəki açarlar hash-lik olmalıdır (hash sözündən yaranıb). Bu o deməkdir ki, açarların hash-dəyişikliyi olmalıdır və bu dəyər onların ömrü boyunca dəyişməz qalmalıdır. Hash dəyər hash funksiyası vasitəsilə əldə edilir. Hash funksiyası, istənilən ölçülü giriş datalarını sabit ölçülü çıxış dəyərinə çevirən alqoritmdir. Bu dəyərə hash-kod deyilir. Dəyişməz data tipləri, məsələn, sətirlər, rəqəmlər və tuplar, hash-likdir və açar kimi istifadə edilə bilər.

Hash funksiyalar və hash-lik haqqında daha ətraflı "Algoritmlər və Data Strukturları" mövzusunda öyrənəcəyik.

1.2 {} istifadə edərək dictionary yaradılması

Python'da dictionary (sözlük) yaratmaq üçün bir neçə üsul var. Budur, dictionary obyektini yaratmaq üçün müxtəlif üsullar və nümunələr:

Figur mötərizələrdən ({}) istifadə

Dictionary yaratmağın ən yayğın üsulu - bu, figur mötərizələrdən istifadə edərək açar-dəyər cütlərini vergüllərlə ayırmaqdır. Özündə açar-dəyər cütləri iki nöqtə ilə ayrılır.


# Boş dictionary yaradılması
empty_dict = {}

# Elementlər ilə dictionary yaradılması
person = {
    "name": "John",
    "age": 30,
    "city": "New York"
}
print(type(person))
print(person)

Vacib! Dictionary yaradılması, set yaratmağa çox oxşayır. Prinsip etibarı ilə dictionary'i elə bir set kimi təsəvvür etmək olar ki, burada açarlara dəyərlər bağlanır.

Əgər figur mötərizələrdə sadəcə “açarlar” göstərilibsə, beləliklə set yaradılır, əgər açarların sonrasında iki nöqtə və dəyərlər göstərilibsə, dictionary yaradılır. Boş figur mötərizələr isə - həmişə dictionary'dir.


# Boş dictionary yaradılması
empty_dict = {}

# Elementlər ilə set yaradılması
unique_items = {
    "name",
    "age",
    "city"
}
print(type(unique_items))
print(unique_items)

1.3 Sözlüyün dict() funksiyası ilə yaradılması

dict() funksiyası açar-dəyər cütlərindən ibarət ardıcıllıqdan, həmçinin adlandırılmış arqumentlərdən istifadə edərək sözlük yaratmaq üçün istifadə edilə bilər.

Açar-dəyər cütlərinin ardıcıllığı ilə nümunə:


# Kortec siyahısından sözlük yaradılması
person = dict([("name", "John"), ("age", 30), ("city", "New York")])
print(person)

Adlandırılmış arqumentlərlə nümunə. Burada əlavə mötərizələr lazım deyil:


# Adlandırılmış arqumentlərdən istifadə edərək sözlük yaradılması
person = dict(name="John", age=30, city="New York")
print(person)

dict.fromkeys() metodunun istifadəsi

fromkeys() metodu verilmiş açarlarla və standart dəyərlə sözlük yaradır.


# Açarlarla və standart dəyərlə sözlük yaradılması
keys = ["name", "age", "city"]
default_value = None
person = dict.fromkeys(keys, default_value) 
print(person)

Sözlükdə üç açar olacaq, lakin hamısı eyni dəyəri saxlayacaq.

1.4 Mövcud dəyişənlərdən sözlük (dictionary) yaratmaq

Sözlükləri dəyişənləri açar və dəyər kimi istifadə edərək yaratmaq olar.


# Dəyişənlərdən sözlük yaratmaq
name = "John"
age = 30
city = "New York"

person = {"name": name, "age": age, "city": city}
print(person)

1.5 Dictionary generator-ların istifadəsi

Dictionary generator-lar qısa və yığcam konstruksiyalar vasitəsilə dictionary-lərin yaradılmasına imkan verir, və onlar list generator-larına bənzəyirlər.


# Dictionary generator vasitəsilə dictionary yaradılması
squares = {x: x**2 for x in range(1, 6)}
print(squares)

1.6 Sözlükdə dəyərlərə müraciət

Dəyəri açar üzrə əldə etmək üçün [] sintaksisi istifadə olunur:


# Sözlükdə dəyərlərə müraciət
person = {"name": "John", "age": 30, "city": "New York"}
print(person["name"])  # Çap edəcək: John

Vacibdir! Əgər açar tapılmasa, KeyError xətası yaranacaq. Bunun qarşısını almaq üçün get() metodundan istifadə etmək olar, bu metod açar varsa dəyəri qaytarır, yoxsa None (və ya başqa dəyəri) standart olaraq qaytarır.


# Sözlükdə dəyərlərə müraciət üçün get() metodundan istifadə
person = {"name": "John", "age": 30, "city": "New York"}
print(person.get("name"))  # Çap edəcək: John
print(person.get("address", "Ünvan tapılmadı"))  # Çap edəcək: Ünvan tapılmadı

1.7 Sözlükdə dəyərlərin dəyişdirilməsi

Sözlükdəki dəyərləri dəyişmək üçün onların açarlarına müraciət edib yeni dəyərlər təyin edə bilərsiniz.


# Sözlükdə dəyərlərin dəyişdirilməsi
person = {"name": "John", "age": 30, "city": "New York"}
person["age"] = 31
print(person)  # Çap edəcək: {'name': 'John', 'age': 31, 'city': 'New York'}

1.8 Sözlükdən elementlərin silinməsi

Elementləri del operatoru və ya pop() metodu ilə silmək olar.


# Elementin del ilə silinməsi
person = {"name": "John", "age": 30, "city": "New York"}
del person["age"]
print(person)  # Çıxış: {'name': 'John', 'city': 'New York'}

# Elementin pop() ilə silinməsi
person = {"name": "John", "age": 30, "city": "New York"}
age = person.pop("age")
print(person)  # Çıxış: {'name': 'John', 'city': 'New York'}
print(age)     # Çıxış: 30

1.9 Sözlükdə açarın mövcudluğunu yoxlama

Sözlükdə açarın mövcud olub-olmadığını yoxlamaq üçün in operatorundan istifadə edə bilərsiniz.


# Sözlükdə açarın mövcudluğunu yoxlama
person = {"name": "John", "age": 30, "city": "New York"}
print("name" in person)  # Çap edəcək: True
print("address" in person)  # Çap edəcək: False

1.10 Sözlük elementlərinin üzərindən keçmək

Dictionary-də açarları, dəyərləri və ya açar-dəyər cütlərini iterasiya edə bilərsiniz:


# Sözlük açarlarının üzərindən keçmək
person = {"name": "John", "age": 30, "city": "New York"}
for key in person:
    print(key)

# Sözlük dəyərlərinin üzərindən keçmək
for value in person.values():
    print(value)

# Sözlük açar-dəyər cütlərinin üzərindən keçmək
for key, value in person.items():
    print(f"{key}: {value}")

1.11 Sözlüklərin real məsələlərdə istifadəsinə nümunələr

Gəlin sözlüklərin real həyatda istifadəsinə aid bir neçə misala nəzər salaq:

Misal 1: Mətndəki sözlərin tezliyinin hesablanması

Tutaq ki, bir mətnimiz var və biz bu mətndə hər bir sözün neçə dəfə təkrarlanmasını hesablamaq istəyirik.


text = "hello world hello"
word_count = {}
for word in text.split():
    if word in word_count:
        word_count[word] += 1
    else:
        word_count[word] = 1
print(word_count)  # Çap edəcək: {'hello': 2, 'world': 1}

Misal 2: Tələbələr haqqında məlumatların saxlanması

Tələbələr haqqında məlumatları saxlamaq üçün sözlükdən istifadə edə bilərik, burada açarlar onların identifikatorları, qiymətlər isə onlar haqqında məlumat olacaq.


students = {
    "123": {"name": "John", "age": 20, "major": "Computer Science"},
    "124": {"name": "Alice", "age": 22, "major": "Mathematics"}
}
print(students["123"]["name"])  # Çap edəcək: John

Misal 3: Telefon kitabçası

Sözlüklərdən sadə bir telefon kitabçası yaratmaq üçün istifadə edə bilərik, burada açarlar adlar, qiymətlər isə telefon nömrələri olacaq.


phone_book = {
    "John": "123-456-7890",
    "Alice": "987-654-3210"
}
print(phone_book["Alice"])  # Çap edəcək: 987-654-3210
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION