2017-05-04 123 views
0

假設我用的容器映射到創建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。 這可以完成工作,但正如您所看到的,效率稍差。

所以我的問題是:還有什麼我可以做的,讓字典同時返回整個列表?

回答

1

據我所知,沒有像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]