'toplama birden çok düzeyde.' Python defaultdict
Bazı harika insanlar sayesinde bu KADAR olasılıklar özellikle okunabilirlik collections.defaultdict
ve hız tarafından sunulan keşfettim. Onları başarı ile kullanmak için koydum.
Şimdi sözlük, iki üst düzey olanlar defaultdict
ve en alçak bir int
üç seviyeleri uygulamak istiyorum. Bunu yapmak için uygun bir yol bulamıyorum. İşte benim girişimi:
from collections import defaultdict
d = defaultdict(defaultdict)
a = [("key1", {"a1":22, "a2":33}),
("key2", {"a1":32, "a2":55}),
("key3", {"a1":43, "a2":44})]
for i in a:
d[i[0]] = i[1]
Şimdi bu çalışır, ancak istediğiniz davranış aşağıdakilerden yok:
d["key4"]["a1"] 1
İkinci seviye defaultdict
int
, ama bunu yapmak için nerede bulamadım türü olan bir yerde ilan edilmesi gerektiğini düşünüyorum.
İlk etapta defaultdict
kullanıyorum nedeni her yeni anahtar sözlüğü başlatmak zorunda kalmamak için.
Daha zarif herhangi bir öneri?
Teşekkürler pythoneers!
CEVAP
Kullanımı:
d = defaultdict(lambda: defaultdict(int))
Bu yeni bir anahtar d
erişildiğinde defaultdict(int)
yeni bir oluşturur.
Nasıl Python ile birden fazla değer ge...
Python - Birden çok Sınırlayıcı ile Sp...
Nasıl açık birden fazla dosya "Py...
Python tarzı: Eğerler birden çok satır...
Python: defaultdict bu defaultdict?...