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

如何在MATLAB中使用python字典对象?,python,matlab,Python,Matlab,我正在使用Matlab2014b中的新功能,您可以直接从MATLAB调用python,并在工作区中获取python对象(就像您使用Java已经很长时间了)。我已经成功地调用了一个函数,并在工作区中获得了一个字典,但我一直在研究如何从中获取值。在本例中,我有一个字典,里面有很多字典,所以我不能像在示例中那样将其转换为MATLAB单元 因此有一个具体的问题:如果我在MATLAB中有一个名为“a”的字典,那么如何将子字典a['2']取出来?通过查阅文档,Pythondict类型基本上与a相同。您需要使

我正在使用Matlab2014b中的新功能,您可以直接从MATLAB调用python,并在工作区中获取python对象(就像您使用Java已经很长时间了)。我已经成功地调用了一个函数,并在工作区中获得了一个字典,但我一直在研究如何从中获取值。在本例中,我有一个字典,里面有很多字典,所以我不能像在示例中那样将其转换为MATLAB单元

因此有一个具体的问题:如果我在MATLAB中有一个名为“a”的字典,那么如何将子字典a['2']取出来?

通过查阅文档,Python
dict
类型基本上与a相同。您需要使用函数来提取某个键所需的值。因此,您可以像这样调用
,因为Python字典存储在
A
中,并且您希望使用
'2'
作为索引到字典中的键:

val = values(A, '2');
因此,
val
将包含与
'2'
键相关的值。MATLAB还能够使用多个键,它将返回多个值——每个键一个值。因此,您也可以这样做:

val = cell(values(A, {'1', '2', '3'}));
val
将是一个三元素单元格数组,其中每个元素都是您输入的相关键的值。必须将
的输出转换为
单元格
数组,因为在Python中这通常是一个列表。为了在MATLAB中使用这些结果,我们需要将其转换为
单元

因此,当您使用
'1'
作为键时,
val{1}
将是字典输出。类似地,当您使用
'2'
作为键时,
val{2}
将是字典输出,依此类推


下面是对
containers.Map
对象的更多操作。如果希望字典中的所有键,请使用以下函数:

k = keys(A);
update(A,py.dict(pyargs('4',5.677)));
如果仅将
单独用于字典,如下所示:

val = cell(values(A));
它将为存储在单元格数组中的字典中存在的每个键生成所有

如果要更新Python字典中的特定键,请使用
update
函数:

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

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

请发布重新创建您正在使用的数据的代码。请参阅。由于各种原因,我无法共享确切的代码,但MATLAB部分是这样的:A=py.pythonfile.pythonfunc(arg),而A作为字典返回。如果'2'是a中的一个键,我可以在python中使用['2'],但我不知道在MATLAB中的等价物是什么。谢谢。是否是准确的代码并不重要。重要的是提供的代码复制了问题。还有20k!祝贺你,巴德@迪瓦卡:谢谢你,我的朋友:)花了一段时间,但最终还是到了那里!这真是太疯狂了,我们在这里呆了将近一年,这一年真是太棒了(多事之秋,学习如此之多)!!:)@迪瓦卡哦,是的!这无疑是一次匆忙。在我开始在这里发帖的几个月里,我对matlab的了解比我在研究生院的整个时间都要多。