CodeGym /Kurslar /Python SELF AZ /Daxili dictionary'lər

Daxili dictionary'lər

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

7.1 Daxili dictionary-lərin yaradılması

Daxili dictionary-lər — mürəkkəb data strukturlarını təsvir etmək üçün çox rahat bir üsuldur və siz bunlarla tez-tez qarşılaşacaqsınız. Gəlin, bunları yaratmaqda bir az məşq edək.

Daxili dictionary-lərin yaradılması

Budur daxili dictionary yaratmağın nümunəsi:


person = {
    "name": "Alice",
    "details": {
        "age": 25,
        "city": "New York",
        "address": {
            "street": "123 Main St",
            "zip": "10001"
        },
        "mother": "Jane Smith"
    },
    "gender": "female"
}
print(person)  # Çıxış: {'name': 'Alice', 'details': {'age': 25, 'city': 'New York', 'address': {'street': '123 Main St', 'zip': '10001'}, 'mother': 'Jane Smith'}, 'gender': 'female'}

Bu nümunədə person — içində daxili dictionary details olan dictionary-dir, hansı ki, öz növbəsində başqa bir daxili dictionary address ehtiva edir.

Daxili dictionary hissələrdən də yaradıla bilər:


address = {
    "street": "123 Main St",
    "zip": "10001"
}
         
details = {
    "age": 25,
    "city": "New York",
    "address": address
}
         
person = {
    "name": "Alice",
    "details": details,
    "gender": "female"
}
print(person)  # Çıxış: {'name': 'Alice', 'details': {'age': 25, 'city': 'New York', 'address': {'street': '123 Main St', 'zip': '10001'}}, 'gender': 'female'}

7.2 Daxili sözlüyün elementlərinə giriş

Daxili sözlüklərin elementlərinə giriş asan və sadədir. Beləcə edilir:

Üst səviyyə elementlərinə giriş


name = person["name"]
print(name)  # Çıxış: Alice

Daxili sözlüyün elementlərinə giriş


age = person["details"]["age"]
city = person["details"]["city"]
print(age)  # Çıxış: 25
print(city)  # Çıxış: New York

Daha dərin daxili səviyyə elementlərinə giriş


street = person["details"]["address"]["street"]
zip_code = person["details"]["address"]["zip"]
print(street)  # Çıxış: 123 Main St
print(zip_code)  # Çıxış: 10001

7.3 Daxili sözlüyün elementlərinin dəyişdirilməsi

Əgər siz artıq istənilən dərinlikdə olan elementləri necə çıxarmaq lazım olduğunu başa düşmüsünüzsə, onların dəyişdirilməsi daha da asan olacaq:

Yuxarı səviyyə dəyərlərinin dəyişdirilməsi


person["name"] = "Bob"
print(person["name"])  # Çıxış: Bob

Daxili sözlüyün dəyərlərinin dəyişdirilməsi


person["details"]["age"] = 26
print(person["details"]["age"])  # Çıxış: 26

Daha dərin səviyyəli dəyərlərin dəyişdirilməsi


person["details"]["address"]["city"] = "Los Angeles"
print(person["details"]["address"]["city"])  # Çıxış: Los Angeles

Daxili sözlüyə yeni elementlərin əlavə edilməsi


person["details"]["phone"] = "123-456-7890"
print(person["details"]["phone"])  # Çıxış: 123-456-7890

Yuxarı səviyyə elementlərinin silinməsi


# 'person' sözlüyündən 'country' elementini silirik
del person["country"]
print(person)  # 'country' elementi sözlükdən silinəcək

Daxili sözlükdən elementlərin silinməsi


# 'details' sözlüyündən 'phone' elementini silirik
del person["details"]["phone"]
print(person["details"])  # 'details' sözlüyündən 'phone' elementi silinəcək

7.4 Daxili dictionary-lərin gəzilməsi

Dictionary-dəki bütün elementləri gəzmək üçün bir neçə üsul var. Döngələr – ən sadə üsullardan biridir:

Daxili dictionary-lərin elementləri üzrə iterasiya


for key, value in person.items():  # Valideyn dictionary-ni gəzirik
    if isinstance(value, dict):  # Əgər qiymət dictionary-dirsə
        for key2, value2 in value.items():  # Alt dictionary-nin elementlərini gəzirik
            print(f"{key} --> {key2}: {value2}")

Bütün dərinlik səviyyələrində rekursiv iterasiya


def print_dict(d, indent=0):
    for key, value in d.items():
        print("  " * indent + str(key) + ": ", end="")
        if isinstance(value, dict):
            print()
            print_dict(value, indent + 1)
        else:
            print(value)
        
print_dict(person)

Rekursiya haqqında daha ətraflı «Alqoritmlər və Məlumat Strukturları» mövzusunda öyrənəcəksiniz.

Bu arada, rekursiyadan daxili dictionary-lərdə dərinlikdə dəyər axtarışı üçün rahat istifadə etmək mümkündür. Budur bir nümunə:


def find_key(d, key):
    if key in d:
        return d[key]
    for k, v in d.items():
        if isinstance(v, dict):
            result = find_key(v, key)
            if result:
                return result
    return None
        
phone = find_key(person, "phone")
print(phone)  # Nəticə: None (çünki 'phone' elementi silinmişdi)
1
Опрос
Git ilə iş,  11 уровень,  7 лекция
недоступен
Git ilə iş
Git ilə iş
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION