Python模拟MatLab数据结构

时间:2013-10-24 21:43:09

标签: python list matlab dictionary numpy

我最近跳出了矩阵实验室窗口,我试图让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(所以我可以在一行中包含每个材料的所有变量),或者字典可以包含多个图层或者可以包含列表,那么它们就是完美的但是我不能找到我现在想要的东西!

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:6)

正如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