SORU
8 NİSAN 2010, PERŞEMBE


'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
8 NİSAN 2010, PERŞEMBE


Kullanımı:

d = defaultdict(lambda: defaultdict(int))

Bu yeni bir anahtar d erişildiğinde defaultdict(int) yeni bir oluşturur.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • After Effects Tutorials w/ Mikey

    After Effect

    24 HAZİRAN 2009
  • UsherVEVO

    UsherVEVO

    15 EKİM 2009
  • WPBeginner - WordPress Tutorials

    WPBeginner -

    17 Temmuz 2009