如何在 MATLAB 中使用 python 字典对象?

How do I use a python dictionary object in MATLAB?

我正在使用 MATLAB 2014b 中的新功能,您可以直接从 matlab 调用 python 并在工作区中获取 python 对象(就像您可以使用 Java 很长一段时间)。我已经成功地调用了一个函数并将字典放入工作区,但我仍然不知道如何从中获取值。在这种情况下,我有一个充满字典的字典,所以我不能像他们在示例中那样将它转换为 MATLAB 单元格。

所以一个具体的问题:如果我在 MATLAB 中有一个名为 "A" 的字典,我如何得到子字典 ​​A['2']?

通过查询 MATLAB External Interfaces documentation, the Python dict type is essentially the same interface as a containers.Map. You need to use the values 函数来提取您想要的某个键的值。因此,假设您的 Python 字典存储在 A 中并且您想使用 '2' 作为索引到字典中的键,您可以这样调用 values

val = values(A, '2');

因此,val 将包含与键 '2' 相关联的值。 MATLAB 还可以使用多个键,它会 return 多个值 - 每个键一个。因此,您也可以这样做:

val = cell(values(A, {'1', '2', '3'}));

val 将是一个三元素元胞数组,其中每个元素都是您输入的关联键的值。您必须将 values 的输出转换为 cell 数组,因为这通常是 Python 中的 list。为了在 MATLAB 中使用这些结果,我们需要转换为 cell

因此,当您使用 '1' 作为键时,val{1} 将是字典输出。同样,当您使用 '2' 作为键等时,val{2} 将是字典输出。


这里有一些对 containers.Map 对象的更多操作。如果您想要字典中的所有键,请使用 keys 函数:

k = keys(A);

如果您只是将 values 与字典一起使用,像这样:

val = cell(values(A));

它将为存储在元胞数组中的字典中的每个键生成 所有 个值。

如果您想更新 Python 词典中的特定键,请使用 update 函数:

update(A,py.dict(pyargs('4',5.677)));

这里,我们使用字典A更新键值对,其中键是'4',新值是5.677.