テキストファイルで見つけたすべての行に構造体が欲しいのですが。 (つまり、基本的には、構造体を定義してから、行を数え、構造体を埋めたいです。)
C++、C#では問題ありません。しかし、私は常にPythonで迷っています。
私の構造体は次のようになります:
struct[0].name = "foo"
struct[0].place = "Shop"
struct[1].name = "bar"
struct[1].place = "Home"
等々。
(足りない質問で申し訳ありません。他の初心者(私のような)が役に立てば幸いです。)
もちろん、実物を反映するように質問(タイトル)を自由に編集してください。
辞書のリストはどうですか?
mydictlist = [{"name":"foo", "place":"Shop"},
{"name":"bar", "place":"Home"}]
その後、あなたは行うことができます
>>> mydictlist[0]["name"]
'foo'
>>> mydictlist[1]["place"]
'Home'
等々...
サンプルファイルの使用:
mydictlist = []
with open("test.txt") as f:
for line in f:
entries = line.strip().split(" ", 5) # split along spaces max. 5 times
mydictlist.append({"name": entries[0],
"time1": entries[1],
"time2": entries[2],
"etc": entries[5]})
あなたにあげる:
[{'etc': 'Vizfoldrajz EA eloadas 1', 'name': 'Hetfo', 'time2': '10:00', 'time1': '8:00'},
{'etc': 'Termeszetfoldrajzi szintezis EA eloadas 1', 'name': 'Hetfo', 'time2': '14:00', 'time1': '12:00'},
{'etc': 'Scriptnyelvek eloadas 1', 'name': 'Hetfo', 'time2': '16:00', 'time1': '14:00'}
...]
IItは、データとして何を持っているかに依存します。
名前と場所を文字列として保存するだけの場合は、次のことをお勧めします。
名前付きタプルのリスト[(name="foo", place="Shop"), (name="bar", place="Home")]
ほとんどすべての場合で、PythonリストはC配列に似ています。Pythonにはarray
モジュールがありますが、これは薄いラッパーです実際のC配列の周りにあるので、Cとの間で何かを公開する必要がない限り、それを使用しません。
また、構造体はオブジェクトとして簡単に表現できます。何かのようなもの:
class Data(object):
def __init__(self, name, place):
self.name = name
self.place = place
次に、ファイルを1行ずつループして、次のように入力します。
my_list = []
with open("myfile.txt") as f:
for line in f.readlines():
# line is each line in the file
# let's pretend our file structure is "NAME PLACE"
data = line.split() # data[0] = name, data[1] = place
my_list.append(Data(data[0], data[1]))
# my_list now contains objects of class Data, which has members name and place
これは、あなたを動かし、基本的なファイル/クラス/リスト操作を行う方法を理解するのに役立つ出発点として十分です。
辞書を使うか、少人数のクラスを作ることができます。
>>> s = [{'name': 'foo', 'place': 'shop'}, {'name': 'bar', 'place': 'home'}]
>>> s[0]['name']
'foo'
また、pythonは、pythonモジュールであるため、「struct」という名前を付けないことをお勧めします。
なぜそんなに苦労するのかわからない
your_struct()クラス:
def __init__(self, value, string):
self.num = value
self.string = string
C = [[ your_struct(0,'priyank') for j in range(len(n)) ] for i in
range(len(n)) ]
# for 2-D Matrix
C = [ your_struct(0,'priyank') for j in range(len(n)) ] // for 1-D array
class Struct:
def __init__(self, name, place):
self.name = name
self.place = place
structs = []
structs.append(Struct("foo","bar"))
structs.append(Struct("other_foo","other_bar"))