In Perl, I can do this:
push(@{$h->[x]}, y);
Can I simplify the following python codes according to above Perl example?
if x not in h:
h[x] = []
h[x].append(y)
I want to simplify this, because it goes many places in my code, (and I cannot initialize all possible x with []). I do not want to make it a function, because there is no ‘inline’ keyword.
Any ideas?
A very elegant way (since Python 2.5) is to use
defaultdictfrom the “collections” module:defaultdictis like a dict, but provides a default value using whichever constructor you passed to it when you created it (in this example, a list).I particularly like this over the
setdefaultdict method, because 1) you define the variable as a defaultdict, and generally no other changes are required on the code (except perhaps to remove previous kludges for default values); and 2) setdefault is a terrible name 😛