Python - "结构数组"

Apa*_*che 19 python arrays struct

我想为我在文本文件中找到的每一行都有一个结构.(所以是的,基本上我想定义我的结构,然后计算行数,并填充我的结构.)

在C++中,C#很好.但我总是迷失在Python中.

我的结构看起来像:

struct[0].name = "foo"  
struct[0].place = "Shop"  

struct[1].name = "bar"  
struct[1].place = "Home"  
Run Code Online (Sandbox Code Playgroud)

等等.
(抱歉这个蹩脚的问题,希望其他新手(比如我)会发现它很有用.)

当然,随意编辑问题(标题)以反映真实情况.

Mat*_*all 15

你想创建一个包含nameplace领域.

class Baz():
    "Stores name and place pairs"
    def __init__(self, name, place):
        self.name = name
        self.place = place
Run Code Online (Sandbox Code Playgroud)

然后,您将使用该类的实例列表.

my_foos = []
my_foos.append(Baz("foo", "Shop"))
my_foos.append(Baz("bar", "Home"))
Run Code Online (Sandbox Code Playgroud)

另请参阅:类(来自Python教程).


Tim*_*ker 5

一个dicts列表怎么样?

mydictlist = [{"name":"foo", "place":"Shop"},
              {"name":"bar", "place":"Home"}]
Run Code Online (Sandbox Code Playgroud)

那你可以做

>>> mydictlist[0]["name"]
'foo'
>>> mydictlist[1]["place"]
'Home'
Run Code Online (Sandbox Code Playgroud)

等等...

使用您的示例文件:

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]})
Run Code Online (Sandbox Code Playgroud)

给你:

[{'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'}
 ...]
Run Code Online (Sandbox Code Playgroud)