Python - "结构数组

28 投票
9 回答
78613 浏览
提问于 2025-04-16 16:36

我想为我在文本文件中找到的每一行创建一个结构体。也就是说,我想先定义我的结构体,然后计算行数,最后把这些结构体填满。

在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教程中的类

撰写回答