2

我最近跳出了矩阵实验室窗口,我正试图让 Python/Numpy/Scipy 做我以前在 MatLab 中做的事情。到目前为止看起来真的很好,但我正在努力解决的一件事是找到类似于 MatLab 中的数据结构的东西。

我想编写一个通用代码来读取 .xml 文件并根据它们是字符串、标量还是矩阵自动将变量分配到数据结构中。一个典型的 xml 文件会像这样拆分:

<material>
<id>
1
<\id>
<E>
17e4
<\E>
<var 2>
'C:\data file path'
<\var 2>
<var 3>
[1 2;3 4]
<\var 3>
<\material>
<material>
<id>
2
<\id>
<var 1>
17e4
<\var 1>
<var 2>
'C:\data file path'
<\var 2>
<var 3>
[1 2;3 4]
<\var 3>
<\material>
...
etc

在 Matlab 中,我会创建一个类似这样的数据结构:

Materials.1.E=17e4
Materials.1.var2='C:\data file path'
Materials.1.var3=[1 2;3 4]
Materials.2.E=17e4
Materials.2.var2='C:\data file path'
Materials.2.var3=[1 2;3 4]

如果 python 中的列表可以是 2D 的(所以我可以将每种材料的所有变量放在一行上)或者字典可以有不止一层或可以包含列表,它们会是完美的,但我找不到我的此刻想要!

任何帮助都感激不尽!

4

1 回答 1

7

正如 Shai 建议的那样,您可以使用字典列表。对于您的示例,这看起来像这样:

Materials = []

Materials.append({'E': 17e4, 'var2': 'C:\\data file path', 'var3': [1, 2, 3, 4]})
Materials.append({'E': 17e4, 'var2': 'C:\data file path', 'var3':[1, 2,3, 4]})

print Materials[0]['var2']

打印:

C:\data file path
于 2013-10-24T21:55:18.070 回答