如何在MATLAB 2023a中创建以数组为键的字典?
MATLAB 2023a中数组作为字典键的正确用法
MATLAB 2023a支持将数组作为字典的键,你遇到的意外行为是因为传递键的方式错误,导致数组被拆解成了单个元素。
问题原因
直接将[1,0]这类数组作为dictionary的参数时,MATLAB会把数组展开为多个独立的键。比如dictionary([1,0], "south")会被解析为键1和0对应同一个值south,后续的数组参数也会被同样拆解,最终出现键被覆盖的结果。
正确实现方式
要将数组作为单个键传递,需要把每个数组键包装成单元格数组的元素,或者使用键值对数组构造字典:
方法1:单元格数组传递键值
orientation_dict = dictionary({[1, 0], [-1, 0], [0, 1], [0, -1]}, ... {"south", "north", "east", "west"});
方法2:键值对数组构造
kvPairs = [ {[1, 0], "south"}; {[-1, 0], "north"}; {[0, 1], "east"}; {[0, -1], "west"} ]; orientation_dict = dictionary(kvPairs);
验证结果
运行上述代码后,字典的输出会和你期望的一致:
orientation_dict = dictionary (1x2 double ⟼ string) with 4 entries: [1, 0] ⟼ "south" [-1, 0] ⟼ "north" [0, 1] ⟼ "east" [0, -1] ⟼ "west"
注意事项
作为字典键的数组必须保证维度完全一致(比如都是1x2的double数组),不同维度的数组会被视为不同类型的键,导致MATLAB报错。
内容的提问来源于stack exchange,提问作者TriforceFiction
相关产品推荐
相关产品推荐

