tsv の読み込み

最近考えた TSV (tab separated values) 形式で書かれたデータファイルを読んで辞書のリストに登録する.

import re
tsvfile = "filename"

f=open(tsv,"r")
s=re.compile("[\t\s]")
objects=map( lambda x: { 
        "id" : int(x[0]),   # ここら辺はそれぞれのデータフォーマットに応じて
        "ra": float(x[4]),
        "dec":float(x[5]),
        "sn": float(x[3])},
        filter( lambda x: len(x) is not 0,   # 空行を読飛ばす
            [ s.split(line) for line in f.readlines() ]
        )       
    )       
f.close()

もっとエレガントに書ける方法はないかしら.あーコメントアウトくらい読飛ばした方が良いかな.
たとえば

filtered = filter(lambda object: object['sn']>3.7, objects)
print filtered

で sn > 3.7 に合致するものを抜け出せる.
高速な numpy.where は数字の列しか扱えないと思うけど,これなら構造体的なデータも比較的速く扱える.と思う.いつかテストしてみるつもり.