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)
GO TO FULL VERSION