dict.get

昨日のpythonネタで二つとも

  try:
    foo[key] += val
  except:
    foo[key] = initial

みたいなダッサいことしてました。
以下のように書けば

  foo[key] = foo.get(key, initial) + val

良いんですね。。。こういうとこダメだなあ。しっかりリファレンス読もう。

と、思ったけど これだと 正しくは

  foo[key] = foo.get(key, initial-val) + val

となるのか。何か汚い気がする。

今回の例では問題なさそう。
前:

                        try:
                                ret[name]+= pow
                        except:
                                ret[name] = pow

後:

                        ret[name] = ret.get(name, 0) + pow

前:

         try:
            tags[keyword] += 1
         except:
            tags[keyword] = 1

後:

         tags[keyword] = tags.get(keyword,0) + 1

どっちが見やすいんだろ。