如何使用Octave创建和访问字典(或map或hashtable)

时间:2017-02-18 11:19:14

标签: dictionary struct hashtable octave

如何使用Octave创建和访问字典(或map或hashtable)? 我尝试了几种方法,但也许有更有效的方法。下面是显示我尝试过的代码。它使用来自此处提供的.mat文件的输入: https://www.dropbox.com/s/4v1z1q04ivpgjvf/sample_input_dictionary.mat?dl=0

% Methods to build/use a dictionary on Octave

clear

tic

load sample_input_dictionary.mat;
pkg load general

toc

% Dict-based dictionary, using the "general" package: very slow to access
d_dict  = dict(nodes, num2cell(1:numel(nodes)));

toc

% Struct-based dictionary: slower to build, much faster to access
temp = [nodes', num2cell([1:numel(nodes)]')] .';
d_struct = struct(temp{:}); clear temp;

toc

% Is there an equivalent and more efficient cell-based dictionary?

% A different struct-based dictionary, which I could not build vectorially
t = struct();
for m=1:numel(nodes)
    t.(nodes{m}) = edges{m};
end

toc

% Example of accessing the above dictionaries
d_dict('1234') % this takes forever
d_struct.('1234')
t.('1234') 

2 个答案:

答案 0 :(得分:0)

您可以尝试结构单元格数组

我的偏好是 Cell Arrays 。但是你试着去了解他们做了什么并做出了适当的决定。

如果您可以查看文档,那会更好。

我提供了一些可能有用的链接。

数据容器:link to Octave Documentation

结构:link to Octave Documentation

Cell Arrays:link to Octave Documentation

答案 1 :(得分:0)

在 4.4.0 版中添加了 containers.Map 数据结构。以下是撰写此答案时最新文档(版本 6.2.0)的链接。

https://octave.org/doc/v6.2.0/containers_002eMap.html