Ana içeriğe geç
Modül 6 · Ders 2 ders 4Kurstaki 22/36~10 min
Modül dersleri (2/4)

Anlamayı dikte edin ve ayarlayın

Liste kavramaları için kullanılan aynı sözdizimi aynı zamanda derlemek için de çalışır. dict ve set değerleri — yalnızca parantezleri değiştirmeniz yeterlidir.

Söylenti anlama

Sözdizimi: {key: value for element in iterable}.

Python
quadrati = {n: n * n for n in range(5)}
# {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

Ortak kalıp: Bir demet listesini bir dikteye dönüştürün.

Python
coppie = [("a", 1), ("b", 2), ("c", 3)]
d = {k: v for k, v in coppie}
# {'a': 1, 'b': 2, 'c': 3}
# (equivalente a dict(coppie) in questo caso)

Bir dict'in anahtarlarını ve değerlerini değiştirin:

Python
originale = {"a": 1, "b": 2, "c": 3}
invertito = {v: k for k, v in originale.items()}
# {1: 'a', 2: 'b', 3: 'c'}

Bir sözü filtrele:

Python
prezzi = {"mela": 1.2, "pera": 1.5, "kiwi": 2.5, "ananas": 4.0}
economici = {k: v for k, v in prezzi.items() if v < 2.0}
# {'mela': 1.2, 'pera': 1.5}

Anlamayı ayarlayın

Sözdizimi: {expression for element in iterable}. Listeyle aynı anlama, ancak süslü parantezlerle.

Python
parole = ["ciao", "mondo", "ciao", "python"]
uniche = {p.upper() for p in parole}
# {'CIAO', 'MONDO', 'PYTHON'}

İsim listesindeki benzersiz baş harfler:

Python
nomi = ["Ada", "Linus", "Grace", "Alan", "Guido"]
iniziali = {n[0] for n in nomi}
# {'A', 'L', 'G'}

Filtre + dönüşüm

Liste anlamalarında olduğu gibi, sondaki if filtreleri:

Python
{n: n * n for n in range(10) if n % 2 == 0}
# {0: 0, 2: 4, 4: 16, 6: 36, 8: 64}

Anahtarları ve değerleri değiştirmek için dikte anlamalar

Bir sözlüğü tersine çevirmenin çok yaygın bir modeli (değerlerin benzersiz olduğu varsayılarak anahtarların ve değerlerin değiştirilmesi):

Python
orig_dict = {'a': 1, 'b': 2}
inv_dict = {value: key for key, value in orig_dict.items()}
# result: {1: 'a', 2: 'b'}

Deneyin

Egzersiz#python.m6.l2.e1
Denemeler: 0Yükleniyor…

`words = ['mela', 'pera', 'kiwi', 'muz']` verildiğinde, `uzunlukları' bir dict {word: len(word)} olarak oluşturun. 'Uzunlukları' değerlendirin.

Düzenleyici yükleniyor…
İpucu göster

{p: kelimelerdeki p için len(p)}

3 denemeden sonra çözüm mevcut

Alıştırmayı gözden geçirin

Egzersiz#python.m6.l2.e2
Denemeler: 0Yükleniyor…

"Sayılar = [1, 2, 2, 3, 4, 4, 5]" verildiğinde, karelerin bir SET'i olarak "benzersiz_kareler"i oluşturun. "Benzersiz_kareler"i değerlendirin.

Düzenleyici yükleniyor…
İpucu göster

':' içermeyen küme parantezleri = kavramayı ayarlar.

3 denemeden sonra çözüm mevcut

Ek zorluk

Egzersiz#python.m6.l2.e3
Denemeler: 0Yükleniyor…

Given the list of strings `names = ["Alice", "Bob"]`, use a dict comprehension to create a dictionary that maps each name to its length. Store the dictionary in `name_lengths` and evaluate it.

Düzenleyici yükleniyor…
İpucu göster

Sözdizimi şu şekildedir: {isim: len(isim), adlardaki ad için}.

3 denemeden sonra çözüm mevcut