namedtuple ve OrderedDict
Diğer kullanışlı koleksiyonlar
namedtuple ve OrderedDict, CoddyKit'te ücretsiz bir Python Academy dersidir. Bu, 4 dersinin 4. 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, Python Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Python Academy kursu toplamda 4 dersten oluşur.
İki kullanışlı koleksiyon daha
collections modülü, okunabilir kayıt benzeri demetler için namedtuple ve ek sıralama yöntemlerine sahip sözlükler için OrderedDict içerir.
Bunları from collections import namedtuple, OrderedDict ile içe aktarın.
from collections import namedtuple, OrderedDict
print(namedtuple)
print(OrderedDict)Adlandırılmış demet tanımlama
namedtuple(name, fields) yeni bir demet alt sınıfı oluşturur. Tür adını ve alan adlarından oluşan bir listeyi verirsiniz. Sonuç, örneklerini oluşturabileceğiniz bir sınıftır.
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(3, 4)
print(p)Ada göre erişim
En önemli avantajı şudur: Alanları anlaşılması zor indeks numaraları yerine adlarıyla okuyabilirsiniz; bu da kodu çok daha okunabilir hâle getirir.
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(3, 4)
print(p.x)
print(p.y)Hâlâ bir demet
Adlandırılmış demet gerçek bir demet olduğundan indeksleme, paket açma ve yineleme işlemlerinin tümü çalışmaya devam eder.
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(3, 4)
print(p[0])
x, y = p
print(x + y)Değişmez ama değiştirilebilir
Tüm demetler gibi adlandırılmış demetler de değişmezdir. Değiştirilmiş bir kopya elde etmek için yeni bir örnek döndüren ._replace() yöntemini kullanın.
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(3, 4)
q = p._replace(y=10)
print(p)
print(q)Sözlüğe dönüştürme
._asdict(), adlandırılmış demeti alan adlarını değerlere eşleyen normal bir sözlüğe dönüştürür.
from collections import namedtuple
Car = namedtuple('Car', ['make', 'year'])
c = Car('Toyota', 2026)
print(c._asdict())Varsayılan değerler
Adlandırılmış demet tanımlarken defaults sağlayın. Varsayılanlar en sağdaki alanlara uygulanır; böylece örnek oluştururken bu alanları belirtmeyebilirsiniz.
from collections import namedtuple
User = namedtuple('User', ['name', 'role'], defaults=['guest'])
print(User('Alice'))
print(User('Bob', 'admin'))Alanları inceleme
._fields niteliği, iç gözlem yapmak veya genel amaçlı kod oluşturmak için yararlı olan alan adlarını listeler.
from collections import namedtuple
Color = namedtuple('Color', ['r', 'g', 'b'])
print(Color._fields)OrderedDict temelleri
OrderedDict, ekleme sırasını hatırlar. Python 3.7'den beri normal sözlükler de sırayı korur; ancak OrderedDict, başka türlü elde edemeyeceğiniz ek sıralama yöntemleri sunar.
from collections import OrderedDict
od = OrderedDict()
od['first'] = 1
od['second'] = 2
print(od)move_to_end
.move_to_end(key), bir anahtarı sona taşır; last=False ile başa taşır. Bu özellik OrderedDict'e özgüdür ve LRU tarzı mantıklar için kullanışlıdır.
from collections import OrderedDict
od = OrderedDict(a=1, b=2, c=3)
od.move_to_end('a')
print(list(od.keys()))
od.move_to_end('c', last=False)
print(list(od.keys()))Sıraya duyarlı eşitlik
İki OrderedDict nesnesi, yalnızca öğeleri aynı sıradaysa eşittir. Normal sözlükler karşılaştırmalarda sırayı yok sayar.
from collections import OrderedDict
a = OrderedDict([('x', 1), ('y', 2)])
b = OrderedDict([('y', 2), ('x', 1)])
print(a == b)
print(dict(a) == dict(b))Kısa kontrol
Değişmez olduğuna göre adlandırılmış demetin değiştirilmiş bir kopyasını nasıl oluşturursunuz?
Özet: adlandırılmış demet ve OrderedDict
Özet:
namedtuple(name, fields), adlarıyla erişilebilen okunabilir ve değişmez kayıtlar oluşturur.- Değiştirilmiş kopyalar için
._replace(), sözlüğe dönüştürmek için._asdict()kullanın. OrderedDict, ekleme sırasını korur ve.move_to_end()yöntemini ekler.- OrderedDict eşitliği, normal bir sözlüğün aksine sıraya duyarlıdır.
from collections import namedtuple
Pt = namedtuple('Pt', ['x', 'y'])
print(Pt(1, 2)._asdict())Sıkça Sorulan Sorular
“namedtuple ve OrderedDict” dersi ücretsiz mi?
Evet — “namedtuple ve OrderedDict” 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 Python Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Python Academy kursu toplamda 4 dersten oluşur.
“namedtuple ve OrderedDict” dersinde ne öğreneceğim?
Diğer kullanışlı koleksiyonlar Python Academy 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.
Python Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Python Academy, 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 4. dersidir.
“namedtuple ve OrderedDict” 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 Python Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Python Academy 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
- Counter
- defaultdict
- deque
- namedtuple ve OrderedDict