Tips

IT技術系Tips

ファイルを読み込んでdictionaryにする(Python3)

ソース

In [1]: import codecs

In [2]: dict([line.rstrip().split("\t") for line in codecs.open("branch.tsv", "r", "utf-8")])
Out[2]: {'001': '北海道支店', '010': '東京支店', '011': 'さいたま支店', '043': '宮崎営業所', '050': '沖縄支店'}

branch.tsv

010	東京支店
011	さいたま支店
001	北海道支店
050	沖縄支店
043	宮崎営業所

keyとvalueを入れ替える

ソース

In [1]: import codecs

In [2]: dict([line.rstrip().split("\t")[::-1] for line in codecs.open("branch.tsv", "r", "utf-8")])
Out[2]: {'さいたま支店': '011', '北海道支店': '001', '宮崎営業所': '043', '東京支店': '010', '沖縄支店': '050'}

[::-1]で、辞書変換前のリストを逆順にしている。

5列あるテキストの2列目と4列目を使ってdictionaryを作る

ソース

In [1]: import codecs

In [2]: dict([line.rstrip().split("\t")[1:4:2] for line in codecs.open("branch2.tsv", "r", "utf-8")])
Out[2]: {'001': '北海道支店', '010': '東京支店', '011': 'さいたま支店', '043': '宮崎営業所', '050': '沖縄支店'}

リストのスライスがポイント。
[1:4:2]は、1以上4未満のindexのリストの要素を、2つに1つ使うと解釈する。

branch2.tsv

A001	010	1	東京支店	true
A001	011	1	さいたま支店	true
A002	001	1	北海道支店	false
A004	050	0	沖縄支店	true
A005	043	0	宮崎営業所	true