Python’da Sözlükler ve Kümeler
Sözlük ve küme oluşturmayı, üyelik denetimini ve collections.Counter ile sıklık sayma gibi yaygın kalıpları keşfedin.
Python’da Sözlükler ve Kümeler, CoddyKit'te ücretsiz bir DSA Interview Prep dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, DSA Interview Prep öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. DSA Interview Prep kursu toplamda 4 dersten oluşur.
Python Sözlükleri: Anahtar-Değer Depoları
Python sözlüğü, anahtarları değerlere bağlar; arama, ekleme ve silme işlemleri ortalama O(1) sürer. İki toplamı, anagram denetimleri ve frekans sayımı işlemlerinin temelini oluşturur. Kod bunu gösterir.
d = {'apple': 3, 'banana': 5}
print(d['apple']) # 3
d['cherry'] = 7
print(len(d)) # 3
print('banana' in d) # True
del d['apple']
print(d) # {'banana': 5, 'cherry': 7}.get() ile Güvenli Arama
Eksik bir anahtarı d[key] ile okumak KeyError hatasına yol açar. Bunun yerine d.get(key, default) kullanarak bir yedek değer döndürün; bu, beklenmedik çalışma zamanı hatalarını önleyen güvenli bir alışkanlıktır.
freq = {}
words = ['the', 'cat', 'sat', 'on', 'the', 'mat']
for w in words:
freq[w] = freq.get(w, 0) + 1
print(freq)
# {'the': 2, 'cat': 1, 'sat': 1, 'on': 1, 'mat': 1}
print(freq.get('dog', 0)) # 0 (no KeyError)Daha Temiz Gruplama için defaultdict
defaultdict(list), her yeni anahtar için otomatik olarak boş bir liste oluşturur; böylece gruplama problemlerindeki tekrar eden temel kod ortadan kalkar. defaultdict(int), kolay sayım için her anahtarı 0'dan başlatır.
from collections import defaultdict
groups = defaultdict(list)
words = ['eat', 'tea', 'tan', 'ate', 'nat', 'bat']
for w in words:
key = ''.join(sorted(w)) # canonical anagram key
groups[key].append(w)
print(list(groups.values()))
# [['eat','tea','ate'], ['tan','nat'], ['bat']]Counter: Hızlı Frekans Haritaları
Counter, sayım için oluşturulmuş bir sözlüktür: herhangi bir yinelenebilir nesne verin, anında bir frekans haritası elde edin. most_common(k), en yüksek k değeri döndürür. Kod bir anagram denetimini gösterir.
from collections import Counter
c = Counter('abracadabra')
print(c) # Counter({'a':5,'b':2,'r':2,'c':1,'d':1})
print(c.most_common(2)) # [('a', 5), ('b', 2)]
# Valid anagram check
def is_anagram(s, t):
return Counter(s) == Counter(t)
print(is_anagram('anagram', 'nagaram')) # TruePython Kümeleri: Sırasız Benzersiz Koleksiyonlar
Bir küme, benzersiz öğeleri tutar ve üyelik denetimlerini O(1) sürede yapar. {1, 2, 3} veya set(iterable) kullanabilirsiniz; ancak {} bir sözlük oluşturur, bu nedenle boş küme için set() kullanın. Yinelenenleri bulmak için idealdir.
seen = set()
nums = [1, 2, 3, 2, 1, 4]
duplicates = []
for n in nums:
if n in seen: # O(1) check
duplicates.append(n)
seen.add(n)
print(duplicates) # [2, 1]
print(len(seen)) # 4 (unique values)Mülakatlar için Küme İşlemleri
Kümeler matematiksel işlemler yapar: | birleşim, & kesişim, - fark, ^ simetrik fark anlamına gelir. Bunlar "ortak öğeler" türündeki soruları tek satırda çözer.
a = {1, 2, 3, 4}
b = {3, 4, 5, 6}
print(a | b) # {1, 2, 3, 4, 5, 6} union
print(a & b) # {3, 4} intersection
print(a - b) # {1, 2} difference
print(a ^ b) # {1, 2, 5, 6} symmetric diffÜyelik Denetimi: Liste ve Küme Karşılaştırması
Seçtiğiniz veri yapısı hızı değiştirir. Bir listede in ile denetim O(n), bir kümede ise O(1) sürer. Tekrarlanan aramalardan önce listeyi kümeye dönüştürmek yaygın bir hızlandırma yöntemidir.
word_list = ['apple', 'banana', 'cherry', 'date']
word_set = set(word_list)
# O(n) per check
print('banana' in word_list) # True
# O(1) per check
print('banana' in word_set) # True
# Practical example: find common elements
a = [1, 2, 3, 4, 5]
b = [3, 4, 5, 6, 7]
common = [x for x in a if x in set(b)]
print(common) # [3, 4, 5]Sözlüklerde Yineleme: Anahtarlar, Değerler, Öğeler
Bir sözlük üzerinde .keys(), .values() veya .items() ile döngü kurun. Döngünün ortasında asla anahtar silmeyin; önce bunları bir listede toplayın, ardından silin. Koda bakın.
scores = {'Alice': 90, 'Bob': 75, 'Carol': 88}
for name, score in scores.items():
print(f'{name}: {score}')
# Find key with max value
best = max(scores, key=scores.get)
print(best) # Alice
# Safe deletion
to_del = [k for k, v in scores.items() if v < 80]
for k in to_del:
del scores[k]
print(scores) # {'Alice': 90, 'Carol': 88}Frozenset: Özetlenebilir Kümeler
Bir frozenset değiştirilemez bir kümedir; bu nedenle bir sözlüğün anahtarı olabilir veya başka bir kümenin içinde bulunabilir. Sıralamanın önemli olmadığı durumlarda anagramları harf kümelerine göre gruplamak için kullanışlıdır.
from collections import defaultdict
words = ['eat', 'tea', 'tan', 'ate', 'nat', 'bat']
groups = defaultdict(list)
for w in words:
key = frozenset(w) # hashable; 'eat','tea','ate' all share same key
groups[key].append(w)
print([sorted(g) for g in groups.values()])
# [['ate','eat','tea'], ['nat','tan'], ['bat']]Dönüşümler için Sözlük Üreteçleri
Sözlük üreteçleri tek satırda bir eşleme oluşturur: {k: v for ...}. Bir sözlüğü tersine çevirmek veya çiftleri filtrelemek için kullanışlıdır. Not: Tersine çevirme, değerlerin benzersiz olduğunu varsayar. Koda bakın.
# Invert a dict
original = {'a': 1, 'b': 2, 'c': 3}
inverted = {v: k for k, v in original.items()}
print(inverted) # {1:'a', 2:'b', 3:'c'}
# Filter by value
scores = {'Alice': 90, 'Bob': 55, 'Carol': 78}
passing = {k: v for k, v in scores.items() if v >= 60}
print(passing) # {'Alice': 90, 'Carol': 78}En Uzun Ardışık Dizi
Kümeler, en uzun ardışık dizi problemini O(n) sürede çözer: tüm sayıları bir kümeye ekleyin, ardından yalnızca öncülü eksik olan her sayıdan başlayarak ileriye doğru sayın. Sıralama gerekmez.
def longest_consecutive(nums):
num_set = set(nums)
best = 0
for n in num_set:
if n - 1 not in num_set: # start of sequence
cur = n
streak = 1
while cur + 1 in num_set:
cur += 1
streak += 1
best = max(best, streak)
return best
print(longest_consecutive([100,4,200,1,3,2])) # 4 (1,2,3,4)Kısa Kontrol
Kısa bir kontrol yapalım: Bu dersteki sözlük ve küme fikirlerinin ne kadarını öğrendiğinizi görün. Burada içgüdülerinize güvenin. 🎯
Ders Özeti
Özet: sözlükler sayım ve gruplama için O(1) sürede arama sağlar, Counter ve defaultdict tekrar eden temel kodu azaltır ve kümeler O(n) taramaları O(1) denetimlere dönüştürür.
Sıkça Sorulan Sorular
“Python’da Sözlükler ve Kümeler” dersi ücretsiz mi?
Evet — “Python’da Sözlükler ve Kümeler” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve DSA Interview Prep kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. DSA Interview Prep kursu toplamda 4 dersten oluşur.
“Python’da Sözlükler ve Kümeler” dersinde ne öğreneceğim?
Sözlük ve küme oluşturmayı, üyelik denetimini ve collections.Counter ile sıklık sayma gibi yaygın kalıpları keşfedin. DSA Interview Prep ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
DSA Interview Prep öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te DSA Interview Prep, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Python’da Sözlükler ve Kümeler” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu DSA Interview Prep dersinde kod yazıp çalıştırabilir miyim?
Evet. Her DSA Interview Prep dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Listeler, Demetler ve Dilimleme
- Python’da Sözlükler ve Kümeler
- Kapsamlı İfadeler ve Yerleşik İşlevler
- İşlevler, Kapanımlar ve Lambda