CodeGym /Kurslar /Python SELF AZ /Dövrələr və dictionary generatorları

Dövrələr və dictionary generatorları

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

6.1 enumerate() istifadə edilməsi

Artıq dictionary-lərdə keys, valuesitems ilə iş prinsiplərini öyrənmişik. İndi isə enumerate() funksiyasını daha ətraflı nəzərdən keçirək.

enumerate() funksiyası dictionary elementlərini həm indekslərə, həm də açarlara və dəyərlərə çıxış təmin edərək keçmək üçün faydalıdır.

Dictionary-lərlə enumerate() istifadəsinin bir neçə nümunəsi:

Dictionary açarlarına və dəyərlərinə indekslərlə iterasiya

Dictionary açarları və dəyərləri üzərində iterasiya etmək və eyni zamanda indekslər əldə etmək üçün enumerate()dən istifadə edə bilərsiniz.


# Şəxs haqqında məlumat olan dictionary
person = {"name": "Alice", "age": 25, "city": "New York"}

# Dictionary açarlarına və dəyərlərinə indekslərlə iterasiya
for index, (key, value) in enumerate(person.items()):
    print(f"İndeks: {index}, Açar: {key}, Dəyər: {value}")
    # Hər bir dictionary elementinin indeksini, açarını və dəyərini çap edir

Çıxış:


İndeks: 0, Açar: name, Dəyər: Alice
İndeks: 1, Açar: age, Dəyər: 25
İndeks: 2, Açar: city, Dəyər: New York

Indekslərdən istifadə edərək dictionary dəyərlərini dəyişdirmək

İndekslərdən istifadə edərək dictionary dəyərlərini dəyişdirmək üçün enumerate() istifadə edə bilərsiniz.


# İlkin dictionary
person = {"name": "Alice", "age": 25, "city": "New York"}

# Dəyərlərdə indekslər olan yeni dictionary
indexed_person = {}
for index, (key, value) in enumerate(person.items()):
    indexed_person[key] = f"{value}_{index}"
    # Dəyərə indeksləri sətir şəklində əlavə edirik

print(indexed_person) 
# İndekslər dəyərlərə əlavə olunmuş dictionary çap edilir

Çıxış:


{'name': 'Alice_0', 'age': '25_1', 'city': 'New York_2'}

Yeni dictionary yaratmaq üçün enumerate() istifadə edilməsi

İndekslərin açar kimi istifadə edildiyi yeni dictionary yaratmaq üçün enumerate() istifadə edə bilərsiniz.


# İlkin dictionary
person = {"name": "Alice", "age": 25, "city": "New York"}

# İndekslərin açar kimi istifadə olunduğu yeni dictionary
indexed_person = {index: (key, value) for index, (key, value) in enumerate(person.items())}
print(indexed_person)
# Açar kimi indekslər istifadə olunan yeni dictionary çap edilir

Çıxış:


{0: ('name', 'Alice'), 1: ('age', 25), 2: ('city', 'New York')}

6.2 Dictionary generator-lar

Artıq siyahıları yaratmaq üçün List Comprehensions və çoxluqları yaratmaq üçün Set Comprehensions-dən istifadə etmişik. Eyni şəkildə dictionary-ləri yaratmaq üçün generator sintaksisindən istifadə etmək olar. Dictionary Comprehensions (dictionary generator-lar) daha qısa və oxunaqlı kod yazmağa imkan verir.

Əsas dictionary comprehension sintaksisi aşağıdakı kimidir:


{ifadə1: ifadə2 for dəyişən in ardıcıllıq if şərt}

burada

  • dəyişən — iterable olan obyektin hər bir elementinin dəyərini alan dəyişən.
  • ardıcıllıq — həmin dəyişəndən keçən iterable obyekt (məsələn, siyahı, tuple, sətir).
  • ifadə1 — dictionary-nin açarlarını yaratmaq üçün ifadə. Adətən dəyişəndən asılı olur.
  • ifadə2 — dictionary-nin dəyərlərini yaratmaq üçün ifadə.
  • şərt — (opsional) dictionary-yə elementin əlavə olunması üçün yerinə yetirilməli olan şərt.

Məsələn 1:

Ədədlərin kvadratlarını ehtiva edən dictionary yaratmaq


# 1-dən 5-ə qədər olan ədədləri açar, onların kvadratlarını isə dəyər kimi istifadə edən dictionary
squares = {x: x ** 2 for x in range(1, 6)}
print(squares)  # Çıxış: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

Məsələn 2:

Kortec siyahısından dictionary yaratmaq


# Açar-dəyər cütlərini ehtiva edən korteclər siyahısı
pairs = [("name", "Alice"), ("age", 25), ("city", "New York")]

# Korteclər siyahısından dictionary yaratmaq
person = {key: value for key, value in pairs}
print(person)  # Çıxış: {'name': 'Alice', 'age': 25, 'city': 'New York'}

Məsələn 3:

Dictionary yaratmağa filtr tətbiq etmək


# 1-dən 10-a qədər ədədləri açar, onların kvadratlarını isə dəyər kimi istifadə edən dictionary yaradılması
# Yalnız cüt ədədlər üçün
even_squares = {x: x ** 2 for x in range(1, 11) if x % 2 == 0}
print(even_squares)  # Çıxış: {2: 4, 4: 16, 6: 36, 8: 64, 10: 100}

Məsələn 4:

Dictionary yaratarkən elementləri çevirmək


# Sətirlər siyahısı
words = ["apple", "banana", "cherry"]

# Açarlar kimi sətirlərdən, dəyərlər kimi isə onların uzunluqlarından ibarət dictionary yaratmaq
word_lengths = {word: len(word) for word in words}
print(word_lengths)  # Çıxış: {'apple': 5, 'banana': 6, 'cherry': 6}

İç-içə dictionary comprehension-lar


# Açar-dəyər cütlərindən ibarət siyahılar siyahısı
nested_pairs = [[("a", 1), ("b", 2)], [("c", 3), ("d", 4)]]

# İç-içə siyahıdan dictionary yaratmaq
nested_dict = {key: value for sublist in nested_pairs for key, value in sublist}
print(nested_dict)  # Çıxış: {'a': 1, 'b': 2, 'c': 3, 'd': 4}

Kombinə olunmuş üsullar

Daha mürəkkəb hallarda dictionary yaradarkən fərqli üsulları birləşdirmək olar.


# Bir neçə dictionary-ni birinə birləşdirmək
dict1 = {"name": "John", "age": 30}
dict2 = {"city": "New York", "country": "USA"}
combined_dict = {**dict1, **dict2}
print(combined_dict)  # Çıxış: {'name': 'John', 'age': 30, 'city': 'New York', 'country': 'USA'}

Dictionary adından əvvəl ** operatoru-dan istifadə onun elementlərini ayrı-ayrılıqda daxil etmək imkanı verir. Beləliklə, {**dict1, **dict2} ifadəsi hər iki dictionary-nin elementlərini birləşdirir.

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION