defaultdict
чудово, коли значення за замовчуванням є статичним, як новий список, але не настільки, якщо воно динамічне.
Наприклад, мені потрібен словник для відображення рядків в унікальні вставки. defaultdict(int)
завжди буде використовувати 0 для значення за замовчуванням. Так само defaultdict(intGen())
завжди виробляє 1.
Натомість я використав звичайний диктант:
nextID = intGen()
myDict = {}
for lots of complicated stuff:
#stuff that generates unpredictable, possibly already seen str
strID = myDict.setdefault(myStr, nextID())
Зауважте, що dict.get(key, nextID())
недостатньо, тому що мені потрібно мати можливість посилатися на ці значення також пізніше.
intGen
- це крихітний клас, який я будую, який автоматично збільшує int і повертає його значення:
class intGen:
def __init__(self):
self.i = 0
def __call__(self):
self.i += 1
return self.i
Якщо у когось є спосіб це зробити, defaultdict
я хотів би це побачити.