ast.literal_eval単純な辞書の場合はそれを行う方法かもしれませんが、おそらく設計を再考し、最初にそのようなテキストをデータベースに保存しないでください。例えば
import collections
d = {'a':1, 'b': collections.defaultdict()}
import ast
print ast.literal_eval(repr(d))
これは機能せず、ValueError('malformed string')基本的に、非基本型が含まれている場合は dict に変換されません。
より良い方法は、pickle や json などを使用して dict をダンプすることです。
import collections
d = {'a':1, 'b': collections.defaultdict()}
import json
print json.loads(json.dumps(d))
まとめ: を使用してreprシリアライズ、 を使用してデシリアライズするast.literal_evalのは悪い、 を使用json.dumpsしてシリアライズし、 を使用してデシリアライズするjson.loadsのは良い