Can one dynamically add new keys to a Maps data structure in Matlab?

I recently discovered the maps data structure but it seems I can't dynamically assign new keys to it. I am going through some files and don't know the keys beforehand (unless I loops through everything first to get the keys and then again to get the data). Is it possible to not have to loop through things twice and just instead add new keys as I discover them?
[note this is easy to do in python with a dictionary with `dictionary[new_key] = data` ]

1 Comment

Adding a new key-value pair is same as python e.g map_variable(new_key)= data.

Sign in to comment.

Answers (1)

That should work if you do it as is shown by the last example on the containers.Map documentation page. Can you show the full error message (everything in red) you receive when you try? That may show us why it's not working or suggest a further avenue for investigation.

7 Comments

how do you specify that the second type is a vector/matrix type?
I want to map doubles to just tensors.
error:
Mtests =
Map with properties:
Count: 0
KeyType: double
ValueType: double
Error using containers.Map/subsasgn
Specified value type does not match the type expected for this container.
Error in collect_flatness_results (line 19)
Mtests(noise) = all_test_accs;
ok 'any' is the solution:
Mtests = containers.Map('KeyType','double','ValueType','any')
What does class return when called on the variables noise and all_test_accs on line 19 of collect_flatness_results?
Steven, I think I solved it, if you put 'any' Maps can hold any type. The variables there are double and the other is an array of doubles. Thanks! :D

Sign in to comment.

Tags

Asked:

on 30 Mar 2018

Commented:

on 7 Jun 2019

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!