defaultdict
ist großartig, wenn der Standardwert statisch ist, wie eine neue Liste, aber nicht so sehr, wenn er dynamisch ist.
Zum Beispiel brauche ich ein Wörterbuch, um Zeichenfolgen eindeutigen Ints zuzuordnen. defaultdict(int)
wird immer 0 als Standardwert verwenden. Ebenso defaultdict(intGen())
ergibt immer 1.
Stattdessen habe ich ein reguläres Diktat verwendet:
nextID = intGen()
myDict = {}
for lots of complicated stuff:
#stuff that generates unpredictable, possibly already seen str
strID = myDict.setdefault(myStr, nextID())
Beachten Sie, dass dies dict.get(key, nextID())
nicht ausreicht, da ich später auch auf diese Werte verweisen muss.
intGen
ist eine winzige Klasse, die ich baue und die ein int automatisch inkrementiert und seinen Wert zurückgibt:
class intGen:
def __init__(self):
self.i = 0
def __call__(self):
self.i += 1
return self.i
Wenn jemand eine Möglichkeit hat, dies zu tun, defaultdict
würde ich es gerne sehen.