テンプレートエンジンの一部
スランプの脱出のためには焦らずに簡単な問題を解くこと、というわけでたまたまメーリングリストに流れていたこの問題が10行程度で書けると思ったので書いた。
http://www.python.jp/pipermail/python-ml-jp/2009-January/004602.html
def resolve(query): base, rest = query.split(".", 1) base = globals()[base] keys = rest.split(".") for k in keys: if isinstance(base, list): base = base[int(k)] else: base = base[k] return base mylist = ["foo", "bar", "baz"] mydict = {"foo": 1, "bar": 2} mynested = [{"foo": [1, 2, 3]}] print resolve("mylist.1") # bar print resolve("mydict.bar") # 2 print resolve("mynested.0.foo.2") # 3
僕の認識では10行1関数で書けちゃう問題は「緩いボール」に相当する。