CPython Reading 2011/5/15

今日話すこと

C API を使って双方向辞書 (bidirectional dictionary) を作ってみよう.

お前, 誰よ?

  • @cocoatomo

  • B2B の基幹業務パッケージを作る会社
    • 研究開発部門みたいなとこ
    • 普段は Java 使い
  • Python との出会い: 仕事で Jython

  • Python document の翻訳やってます

実は...

PyPI にあった!

http://pypi.python.org/pypi/bidict/0.1.1

でも, これは one-to-one mapping! → よし, N-to-M mapping で作るぞ!

revdict を作る

機能
  • key でも value でも引ける辞書
  • N-to-M でも N-to-one でも one-to-one でも良い.

Python で作ってみる

  • collections.MutableMapping を継承
  • ABC (Abstract Base Class) という仕組みを使う

C API で作ってみる

C API では何をベースにする?

2つの dict の wrapper にすれば良い.

何かアルゴリズムが必要か? メモリサイズを制限して bidict が作れないか?

MultiMap

機能
  • 1:N の関係
  • dict[‘key’].add(‘value’) で追加