【问题标题】:Python analog to MatLab data structurePython 模拟 MatLab 数据结构
【发布时间】:2013-11-03 19:53:44
【问题描述】:

我最近跳出了矩阵实验室窗口,我正在尝试让 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 的(所以我可以将每种材料的所有变量放在一行上)或者字典可以有多个层或可以包含列表,它们会是完美的,但我不能立即找到我想要的!

任何帮助将不胜感激!

【问题讨论】:

  • 为什么python中没有字典列表?
  • 看看this post 关于使用 Python 解析 XML 可能会很有用。此外,如果您正在使用 Python 数据分析堆栈,我非常 - 非常 - 建议您熟悉 iPythonpandas。您可以将它们作为 Continuum Analytics Anaconda Python 发行版的一部分。

标签: python list matlab dictionary numpy


【解决方案1】:

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

【讨论】:

  • 谢谢莫莉,这正是我所需要的。书中没有任何内容让我从中学到东西,但我知道信息高速公路会为我而来!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-30
相关资源
最近更新 更多