異なる要素ごとに別々の数値をIDとして割り振って管理したいってことがよくあります。
Twitterで以下のようなツイートを見かけました。
Pythonでwids = defaultdict(lambda: len(wids))だけで単語を単語IDにマッピングする辞書を作れることに気づいた。Pythonはかっこよすぎるぜ!
2013-04-29 10:17:45 via web
これはすごく簡潔で書きやすくていいですね。
特徴量(素性)にIDを割り振るのに以下のようなクラスをわざわざ書いてたのが馬鹿らしくなりました。
class FeatureCounter(object): def __init__(self): self.count = 1 self.memo = {} def getID(self, x): key = str(x) if key in self.memo: return self.memo[key] else: self.memo[key] = self.count self.count += 1 return self.memo[key]