Python Dictionary ve Set Comprehensions: Sıfırdan İleri Seviye Kapsamlı Rehber
Python’da comprehension yapıları, kodu hem daha okunabilir hem de daha performanslı hale getiren modern programlama yaklaşımıdır.
En çok bilinenler:
- List Comprehension
- Dictionary Comprehension
- Set Comprehension
Bu makalede özellikle Dictionary ve Set Comprehension yapılarını:
- mantık
- performans
- gerçek dünya kullanımı
- bol hands-on örneklerle
derinlemesine öğreneceksin.
1. Comprehension Nedir?
Comprehension, döngü ve koşul yapısını tek satırda ifade etme yöntemidir.
Klasik yöntem:
```python id="c1"
kareler = []
for x in range(10):
kareler.append(x * x)
print(kareler)
Comprehension:
```python id="c2"
kareler = [x * x for x in range(10)]
Ama bugün odak:
- Dictionary Comprehension
- Set Comprehension
2. Dictionary Comprehension (Sözlük Üretimi)
Dictionary comprehension, key-value çiftlerini tek satırda üretme yöntemidir.
2.1 Temel Yapı
{key: value for item in iterable}
2.2 İlk Örnek – Kare Tablosu
```python id="d1"
kareler = {
x: x * x
for x in range(1, 6)
}
print(kareler)
Çıktı:
```text
{1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
2.3 Koşullu Dictionary Comprehension
Sadece çift sayılar:
```python id="d2"
cift_kareler = {
x: x * x
for x in range(10)
if x % 2 == 0
}
print(cift_kareler)
---
## 2.4 String → Dictionary
```python id="d3"
kelimeler = ["python", "java", "csharp"]
uzunluk = {
k: len(k)
for k in kelimeler
}
print(uzunluk)
2.5 Veriyi Normalize Etme (Real World)
```python id="d4"
ham_veri = [" Ali ", " Ayşe ", " Mehmet "]
temiz = {
isim.strip().lower(): len(isim.strip())
for isim in ham_veri
}
print(temiz)
---
## 2.6 Key Mapping (API Transform)
```python id="d5"
api_response = [
("id", 1),
("name", "Laptop"),
("price", 45000)
]
product = {
k: v
for k, v in api_response
}
print(product)
2.7 Nested Dictionary Comprehension
```python id="d6"
data = {
f"item_{x}": {
"value": x,
"square": x * x
}
for x in range(5)
}
print(data)
---
## 2.8 Dictionary Filtering (Log Analizi)
```python id="d7"
logs = {
"INFO": 120,
"ERROR": 5,
"WARNING": 10
}
critical = {
k: v
for k, v in logs.items()
if v > 10
}
print(critical)
3. Set Comprehension (Küme Üretimi)
Set comprehension, benzersiz veri üretmek için kullanılır.
3.1 Temel Yapı
{expression for item in iterable}
3.2 İlk Örnek
```python id="s1"
kareler = {
x * x
for x in range(10)
}
print(kareler)
---
## 3.3 Duplicate Otomatik Silme
```python id="s2"
veri = [1, 2, 2, 3, 3, 4, 5]
unique = {
x
for x in veri
}
print(unique)
3.4 String Set Comprehension
```python id="s3"
kelime = "python programming"
harfler = {
c
for c in kelime
if c != " "
}
print(harfler)
---
## 3.5 Filtreleme (Sadece Çift Sayılar)
```python id="s4"
ciftler = {
x
for x in range(20)
if x % 2 == 0
}
print(ciftler)
3.6 Unique Domain Extraction (Real World)
```python id="s5"
emails = [
"ali@gmail.com",
"ayse@gmail.com",
"mehmet@yahoo.com",
"zeynep@gmail.com"
]
domainler = {
email.split("@")[1]
for email in emails
}
print(domainler)
---
## 3.7 Log Level Extraction
```python id="s6"
logs = [
"INFO: start",
"ERROR: fail",
"INFO: continue",
"WARNING: slow"
]
tipler = {
log.split(":")[0]
for log in logs
}
print(tipler)
3.8 Set + Condition (Data Cleaning)
```python id="s7"
veri = [10, 20, -5, 30, -1, 40]
temiz = {
x
for x in veri
if x > 0
}
print(temiz)
---
# 4. Dictionary vs Set Comprehension
| Özellik | Dictionary | Set |
| ---------- | ----------- | --------------- |
| Çıktı tipi | key-value | unique values |
| Duplicate | key unique | tamamen unique |
| Kullanım | mapping | filtering |
| Performans | O(1) lookup | O(1) membership |
---
# 5. Gerçek Hayat Kullanım Senaryoları
## 5.1 API Response Mapping
```python id="r1"
response = [
("status", "ok"),
("code", 200),
("time", "120ms")
]
result = {
k: v
for k, v in response
}
print(result)
5.2 Data Deduplication Pipeline
```python id="r2"
raw = [
"user1",
"user2",
"user1",
"user3"
]
unique_users = {
u
for u in raw
}
print(unique_users)
---
## 5.3 Feature Engineering (AI / ML)
```python id="r3"
features = {
f"x{i}": i * 2
for i in range(10)
}
print(features)
5.4 KPI Filtering
```python id="r4"
kpi = {
"sales": 100,
"cost": 90,
"profit": 10
}
filtered = {
k: v
for k, v in kpi.items()
if v > 20
}
print(filtered)
---
# 6. Performans Perspektifi
Comprehension yapıları:
* Daha hızlı çalışır
* CPython optimizasyonu vardır
* append loop’a göre daha az overhead üretir
Örnek karşılaştırma:
```python id="perf1"
# klasik yöntem
liste = []
for i in range(1000):
liste.append(i * 2)
# comprehension
liste2 = [i * 2 for i in range(1000)]
7. İç İçe (Nested) Comprehension
7.1 Dictionary içinde Dictionary
```python id="n1"
matrix = {
i: {
j: i * j
for j in range(3)
}
for i in range(3)
}
print(matrix)
---
## 7.2 Set of Tuples
```python id="n2"
pairs = {
(x, y)
for x in range(3)
for y in range(3)
}
print(pairs)
8. En Güçlü Kullanım: Veri Dönüştürme Pipeline
```python id="p1"
raw_data = [
{"name": " Ali ", "age": 30},
{"name": "Ayşe", "age": 25}
]
cleaned = {
item["name"].strip(): item["age"]
for item in raw_data
}
print(cleaned)
---
# 9. Python ve C# Perspektifi
## Python
```python id="csh1"
{ x: x*x for x in range(5) }
C# Alternatif
```csharp id="csh2"
var dict = Enumerable.Range(0, 5)
.ToDictionary(x => x, x => x * x);
---
# 10. Profesyonel Kullanım Tavsiyeleri
Dictionary / Set comprehension kullan:
* Veri transformasyonunda
* ETL pipeline’larda
* API response mapping’de
* Log parsing işlemlerinde
* Feature engineering’de
* Deduplication süreçlerinde
Kullanma:
* Çok karmaşık logic varsa
* Debug edilmesi zor olacaksa
* 1 satır okunabilirliği bozuyorsa
---
# 11. Özet
Dictionary ve Set Comprehensions:
* Kod yazımını sadeleştirir
* Performansı artırır
* Veri dönüşümünü hızlandırır
* Modern Python’un temel yeteneklerindendir
Özetle:
* Dictionary comprehension → **mapping / transform**
* Set comprehension → **unique / filter**
Top comments (0)