я в настоящее время с помощью defaultdict
из Counter
однозначно насчитать несколько непредсказуемых значений для непредсказуемых ключей:Как использовать определенную структуру данных как default_factory для defaultdict?
from collections import defaultdict, Counter
d = defaultdict(Counter)
d['x']['b'] += 1
d['x']['c'] += 1
print(d)
Это дает мне ожидаемый результат:
defaultdict(<class 'collections.Counter'>, {'x': Counter({'c': 1, 'b': 1})})
теперь нужно расширить структуру из значения в defaultdict
и сделать его dict
с двумя ключами: предыдущие Counter
и str
:
mystruct = {
'counter': collections.Counter(),
'name': ''
}
Возможно ли использовать конкретную структуру данных (как указано выше) как default_factory
в defaultdict
? Ожидаемый результат будет заключаться в том, что для каждого несуществующего ключа в defaultdict
будет создан новый ключ и значение, инициализированное со структурой выше.
'defaultdict (lambda: {'counter': Counter(), 'name': ''})'? – jonrsharpe
@jonrsharpe: это прямо на месте, я даже не думал идти таким путем. Не могли бы вы скопировать это в ответ? – WoJ