Merging multiple dictionaries with dictionaries
17 ビュー (過去 30 日間)
古いコメントを表示
Related to this question, how can one merge two dictionaries that have dictionaries as the keys and values?
A = dictionary(dictionary(["key1"], {1}), dictionary(["key2"], {2}));
A(dictionary(["key3"], {3})) = dictionary(["key4"], {4})
B = dictionary(dictionary(["key5"], {5}), dictionary(["key6"], {6}));
B(dictionary(["key7"], {7})) = dictionary(["key8"], {8})
C = dictionary(A.keys, A.values)
C(B.keys) = B.values
0 件のコメント
採用された回答
Matt J
2025 年 7 月 12 日
A = dictionary(dictionary(["key1"], {1}), dictionary(["key2"], {2}));
A(dictionary(["key3"], {3})) = dictionary(["key4"], {4});
B = dictionary(dictionary(["key5"], {5}), dictionary(["key6"], {6}));
B(dictionary(["key7"], {7})) = dictionary(["key8"], {8});
kv = [keys(A, "cell")', keys(B, "cell")';
values(A, "cell")', values(B, "cell")'];
C=dictionary(kv{:})
3 件のコメント
Matt J
2025 年 7 月 12 日
編集済み: Matt J
2025 年 7 月 12 日
But understand that if you now want to loop over the entries of C, you will need an array of its keys. Because the keys are dictionaries, the array will have to be in cell form:
k=[keys(A, "cell"); keys(B, "cell")];
v=[values(A, "cell"); values(B, "cell")];
%% noncell key/values
kv=[k';v'];
C=dictionary(kv{:})
for i=1:numel(k)
d=C(k{i})
end
But you could have implemented the same loop, with less code, by accepting cell-valued dictionary entries:
%% cell key/values
C=dictionary(k,v)
for i=1:numel(k)
d=C{k(i)}
end
その他の回答 (2 件)
Matt J
2025 年 7 月 12 日
f=@(i) {dictionary(["key"+i], {i})}
A = dictionary(f(1), f(2));
A(f(3)) = f(4)
B = dictionary(f(5), f(6));
B(f(7)) = f(8)
C = dictionary(A.keys, A.values)
C(B.keys) = B.values
12 件のコメント
Matt J
2025 年 7 月 12 日
編集済み: Matt J
2025 年 7 月 12 日
Maybe I don't have a necessary understanding of where the original dictionaries are coming from. Even before A, B are created, you apparently have a collection of multiple dictionaries from which A and B will be built. How are you holding this collection together?
It has to be with a cell array, becacuse again, dictionaries cannot be concatenated by themselves.There is no other way to maintain an array of dictionaries. And if the key/value dictionaries are already in cell form, why not continue to use them in that form?
参考
カテゴリ
Help Center および File Exchange で Whos についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!