defaultdict
Sözlük değerlerini otomatik olarak başlatın
defaultdict, CoddyKit'te ücretsiz bir Python Academy 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, 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.
Eksik anahtar sorunu
Normal bir dict ile mevcut olmayan bir anahtara erişmek KeyError yükseltir. Değerleri adım adım oluşturmak istediğinizde bu can sıkıcıdır.
d = {}
try:
d['x'].append(1)
except KeyError as e:
print('KeyError:', e)defaultdict'e giriş
defaultdict, collections modülünden gelen ve eksik her anahtar için varsayılan bir değer üreten bir üretici işlev alan sözlük türüdür. Şu şekilde içe aktarın: from collections import defaultdict.
from collections import defaultdict
d = defaultdict(int)
print(d['missing'])
print(dict(d))int ile sayma
defaultdict(int) ile eksik anahtarların varsayılan değeri 0 olur; böylece önce kontrol etmeden artırabilirsiniz.
from collections import defaultdict
counts = defaultdict(int)
for ch in 'banana':
counts[ch] += 1
print(dict(counts))list ile gruplama
defaultdict(list), yeni anahtarlar için boş bir liste oluşturur; bu da öğeleri gruplara ayırmak için idealdir.
from collections import defaultdict
groups = defaultdict(list)
words = ['apple', 'ant', 'bee', 'bear']
for w in words:
groups[w[0]].append(w)
print(dict(groups))set ile toplama
Anahtar başına benzersiz değerler istediğinizde defaultdict(set) kullanın. Yinelenen değerler otomatik olarak kaldırılır.
from collections import defaultdict
seen = defaultdict(set)
pairs = [('a', 1), ('a', 1), ('a', 2), ('b', 3)]
for k, v in pairs:
seen[k].add(v)
print(dict(seen))Üretici çağrılabilir olmalıdır
Bağımsız değişken, hiç bağımsız değişken almayan ve varsayılan değeri döndüren bir çağrılabilirdir. int, list, set ve dict çalışır; çünkü bunları çağırmak boş bir değer döndürür.
from collections import defaultdict
print(int())
print(list())
print(set())lambda ile özel varsayılan değer
Özel bir varsayılan değer döndürmek için lambda gibi, bağımsız değişken almayan herhangi bir çağrılabilir sağlayabilirsiniz.
from collections import defaultdict
scores = defaultdict(lambda: 100)
print(scores['new_player'])
scores['alice'] -= 10
print(dict(scores))İç içe varsayılan sözlükler
Bir üretici kendisi bir defaultdict oluşturabilir; böylece elle kurulum yapmadan iç içe yapılar oluşturabilirsiniz.
from collections import defaultdict
table = defaultdict(lambda: defaultdict(int))
table['fruit']['apples'] += 3
table['fruit']['pears'] += 2
print(table['fruit']['apples'])
print(table['fruit']['pears'])Erişim anahtarı oluşturur
Dikkat: Eksik bir anahtarı yalnızca okumak, anahtarı varsayılan değerle ekler. Erişimden sonra anahtar sözlükte mevcut olur.
from collections import defaultdict
d = defaultdict(int)
_ = d['ghost']
print('ghost' in d)
print(dict(d))Eklemeden kontrol etme
Bir anahtarı oluşturmadan kontrol etmek için üreticiyi hiçbir zaman tetiklemeyen .get() yöntemini veya in işlecini kullanın.
from collections import defaultdict
d = defaultdict(int)
print(d.get('safe', 'default'))
print('safe' in d)
print(dict(d))Yeniden dict'e dönüştürme
Düz bir sözlük istediğinizde, örneğin bir işlevden döndürmeden veya düzgün şekilde yazdırmadan önce, defaultdict nesnesini dict() içine sarın.
from collections import defaultdict
dd = defaultdict(list)
dd['a'].append(1)
plain = dict(dd)
print(type(plain))
print(plain)Hızlı Kontrol
defaultdict işlevine geçirilen bağımsız değişken neyi temsil eder?
Özet: Varsayılan sözlük
Temel noktalar:
defaultdict(factory), eksik anahtarlar için değerleri otomatik olarak oluşturur.int0 verir (sayma),list[] verir (gruplama),setise boş küme verir (benzersiz gruplama).- Üretici,
lambdadahil olmak üzere hiç bağımsız değişken almayan herhangi bir çağrılabilir olabilir. - Eksik bir anahtarı okumak onu ekler; güvenle kontrol etmek için
.get()veyainkullanın.
from collections import defaultdict
g = defaultdict(list)
for w in ['cat', 'cow', 'dog']:
g[w[0]].append(w)
print(dict(g))Sıkça Sorulan Sorular
“defaultdict” dersi ücretsiz mi?
Evet — “defaultdict” 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.
“defaultdict” dersinde ne öğreneceğim?
Sözlük değerlerini otomatik olarak başlatın 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 2. dersidir.
“defaultdict” 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