さえぴ の めも

色んなアウトプットする。

Python3で構造体っぽいことをしてみる

授業で出た課題をこなすにあたって、構造体を利用できる言語を使うことになったのですが、どうしてもPythonで乗り切りたかったので調べたメモ。
テキストデータを読み込んで構造体に格納し、そのデータに対して探索をかけるという課題でした。


Pythonにはそのまま構造体というものがないので、データを統合する目的としての構造体を使用した場合、空クラスを使用するらしい。

テストの点数を取りまとめる場合の簡単な例。

class score():
	pass

suzuki = score()
suzuki.kokugo = 88
suzuki.rika = 67

honda = score()
honda.kokugo = 75
honda.rika = 72

テキストデータを読み込んでループの中で動的にデータを追加することもできます。便利!

読み込みたいデータ(番号、名前、都道府県が記載)

1,山田 一郎,北海道
2,山田 次郎,青森県
3,山田 三郎,秋田県
4,山田 四郎,岩手県
5,山田 五郎,宮城県


以上のデータを読み取り、それぞれno,name,addrに格納していくプログラムです。

# coding: utf-8

# 空クラス作成
class Hum():
	pass

def get_info(txt):
	man = []
	with open(txt, 'r') as f:
		line = f.readlines()
	for i in range(len(line)):
		man.append(Hum())
		info = line[i].split(',')
		man[i].no = int(info[0])
		man[i].name = info[1]
		man[i].addr = info[2]
	return man

def main():
	man = get_info("info.txt")
	print(man[1].name)

if __name__ == '__main__':
    main()

これで2番目の人の名前を表示するので、出力は「山田 次郎」です。
readlines()使ってるので都道府県名の最後に¥n入っちゃってるのでそこだけ直したい。


構造体のデータにバイナリサーチとか色々できるようにしたコード(そっくりそのまま課題の解答)はgithubにあげました
github.com