Jestem obecnie za pomocą defaultdict
z Counter
jednoznacznie liczyć kilka nieprzewidywalne wartości nieprzewidywalnych klawiszy:Jak użyć konkretnej struktury danych jako default_factory dla defaultdict?
from collections import defaultdict, Counter
d = defaultdict(Counter)
d['x']['b'] += 1
d['x']['c'] += 1
print(d)
To daje mi oczekiwany wynik:
defaultdict(<class 'collections.Counter'>, {'x': Counter({'c': 1, 'b': 1})})
Teraz trzeba rozwinąć strukturę wartości w defaultdict
i sprawiają, że jest to dict
z dwoma kluczami: poprzednim Counter
i str
:
mystruct = {
'counter': collections.Counter(),
'name': ''
}
Czy można użyć konkretnej struktury danych (takiej jak powyższa) jako default_factory
w defaultdict
? Oczekiwany wynik będzie taki, że dla każdego nieistniejącego klucza w defaultdict
zostanie utworzony nowy klucz i wartość zainicjowana powyższą strukturą.
'defaultdict (lambda: {'counter': Counter(), 'name': ''})'? – jonrsharpe
@jonrsharpe: jest na miejscu, nawet nie myślałem, żeby iść tą drogą. Czy mógłbyś skopiować to do odpowiedzi? – WoJ