获得在Matlab与字典键的列表值列表

问题描述:

假设我用的容器映射到创建MATLAB字典其具有如下图:获得在Matlab与字典键的列表值列表

1-A; 
2-B; 
3-C; 

表示字典作为D.

现在我有一个输入列表[2,1,3],我期待的是[B,A,C]。问题是,我不能仅仅使用[2,1,3]作为D的输入列表,而只能为D输入2,1 and 3,并且每次都得到B, A, C。 这可以完成工作,但正如您所看到的,效率稍差。

所以我的问题是:还有什么我可以做的,让字典同时返回整个列表?

据我所知,没有像Python的dict.items这样的一步式解决方案。但是,你可以写几行。 mydict.keys()给你字典作为单元阵列的钥匙,mydict.values()给你值作为一个单元阵列,这样你就可以(在理论上)相结合的:

>> mykeys = mydict.keys(); 
>> myvals = mydict.values(); 
>> mypairs = [mykeys',myvals'] 
mypairs = 
    3×2 cell array 
    'A' [1] 
    'B' [2] 
    'C' [3] 

然而,原则上图是无序的,并在MATLAB文档中我找不到任何说明订单返回keysvalues返回的订单必然一致(unlike Python)。因此,如果您想要更加安全,您可以拨打values,并选择您想要的按键单元阵列,在这种情况下,这将是所有按键:

>> mykeys = mydict.keys(); 
>> myvals = mydict.values(mykeys); 
>> mypairs = [mykeys',myvals'] 
mypairs = 
    3×2 cell array 
    'A' [1] 
    'B' [2] 
    'C' [3]