Pythonのreprとevalを使ったらお手軽にシリアライズ・デシリアライズできるんじゃないか?
>>> d = {"x": 1.0, "y": 0.5}
>>> repr(d)
"{'y': 0.5, 'x': 1.0}"
>>> eval(repr(d))
{'y': 0.5, 'x': 1.0}
という話を聞いて「いやいやNaNとかInfinityとかが通らないでしょ」と思ったわけだけど
>>> d = {"x": 1e999, "y": 1e999 / 1e999}
>>> d
{'y': nan, 'x': inf}
>>> repr(d)
"{'y': nan, 'x': inf}"
>>> eval(repr(d))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1, in <module>
NameError: name 'nan' is not defined
週が開けてから、つっこむべきはそこじゃなくて「jsonモジュールを使えばいいじゃん」だと気づいた
>>> import json >>> json.dumps(d) '{"y": NaN, "x": Infinity}' >>> json.loads(json.dumps(d)) {u'y': nan, u'x': inf}
jsonモジュールは2.6から標準添付だよ!