Python - "结构数组
我想为我在文本文件中找到的每一行创建一个结构体。也就是说,我想先定义我的结构体,然后计算行数,最后把这些结构体填满。
在C++和C#中这样做没问题,但我在Python中总是搞不清楚。
我的结构体大概是这样的:
struct[0].name = "foo"
struct[0].place = "Shop"
struct[1].name = "bar"
struct[1].place = "Home"
然后继续下去。
(抱歉这个问题有点简单,希望其他像我一样的新手能觉得有用。)
当然,欢迎随意修改问题(标题),让它更符合实际情况。
9 个回答
8
那如果用一个字典的列表呢?
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'}
...]
22
你想要创建一个包含 name
(名字)和 place
(地点)这两个字段的 类。
class Baz():
"Stores name and place pairs"
def __init__(self, name, place):
self.name = name
self.place = place
然后你可以使用这个类的实例来创建一个 列表。
my_foos = []
my_foos.append(Baz("foo", "Shop"))
my_foos.append(Baz("bar", "Home"))
另外可以参考: Python教程中的类。