MATLAB:使用containers.Map 混淆行为

Posted

技术标签:

【中文标题】MATLAB:使用containers.Map 混淆行为【英文标题】:MATLAB: Confusing behavior with containers.Map 【发布时间】:2015-10-27 22:16:57 【问题描述】:

我在使用特定键访问值时遇到了一些问题(我使用的是 containers.Map)。我设置了一个名为team_dict 的地图,看起来像:

 'Columbia' : 'www.columbia.com', 'Bates' : 'www.bates.com', ... 

我试着去做

url = team_dict(currentKey); 

访问 Map 中 key currentKey 对应的值。

以下是相关代码:

allKeys = keys(team_dict);

%loop through all keys
for i = 1 : length(allKeys)
    %for current key (team name), getTeam
    currentKey = allKeys(i);
    disp(currentKey);
    url = team_dict(currentKey);
end

我收到此错误:

Error using containers.Map/subsref
Specified key type does not match the type expected for this container.

Error in project (line 27)
    teamPlayers = getTeam(team_dict(currentKey), currentKey);

奇怪的是,当我拨打disp(currentKey) 时,“哥伦比亚”会正确打印出来。另外,在交互式提示中,当我这样做时

team_dict('Columbia')

我找回了正确的 URL。

知道为什么会这样吗?

谢谢

【问题讨论】:

【参考方案1】:

由于allKeys = keys(team_dict); 返回一个键的单元格数组,当您获得currentKey = allKeys(i); 时,您将拥有一个包含该键的单元格。

由于您的键都是字符串,disp(currentKey); 仍然有效。但是url = team_dict(currentKey); 会导致错误,因为currentKey 现在是一个字符串单元格。

你要做的就是修改这一行:

currentKey = allKeys(i);

currentKey = allKeysi;

【讨论】:

您介意详细说明 和 [] 之间的差异,或者向我指出有关它的更多信息的方向吗?忽略,刚找到:mathworks.com/help/matlab/matlab_prog/what-is-a-cell-array.html 是的,就是链接。如果您的问题得到解决,您介意接受答案吗?

以上是关于MATLAB:使用containers.Map 混淆行为的主要内容,如果未能解决你的问题,请参考以下文章

Matlab设置containers.Map的所有值

Matlab Map

MATLAB 对 container.Map(key, value) 进行排序

使用哈希表 MATLAB 创建矩阵

matlab PSO粒子群优化混动汽车功率

如何把matlab里的音频文件转换为wav格式