連想配列(マップ/ハッシュ/ディクショナリ)に別の連想配列の要素をまとめて追加するには (putAll / ++
/ array_merge / update / merge / merge!)
2015/03/04
連想配列(マップ/ハッシュ/ディクショナリ)に別の連想配列の要素をまとめて追加する方法。
Java 2013/10/10
Signature:
要素を1つだけ追加するにはput
を使う。
Scala 2016/10/07
Signature:
要素を追加した新しいマップを返し、自身は変更しない。
同じキーが両方の Map に含まれていた場合は右のものが優先される。
val map1 = Map("a" -> 1, "b" -> 2);
val map2 = Map("a" -> 10, "c" -> 30);
println(map1 ++ map2);
// => Map(a -> 10, b -> 2, c -> 30)
PHP 2016/07/22
array_merge
を使うと2つ以上の配列をマージしてできる新しい配列を取得することができる。元の配列は変更しない。
同じキーが複数の配列に含まれていた場合はあとから追加したもので上書きされる。
array_merge
の代わりに array_merge_recursive
を使うと、同じキーは要素自体が配列になり、値が失われない。
$arr1 = array('a' => 1, 'b' => 2, );
$arr2 = array('a' => 10, 'c' => 30, );
var_export(array_merge($arr1, $arr2));
// 出力結果
// array (
// 'a' => 10,
// 'b' => 2,
// 'c' => 30,
// )
var_export(array_merge_recursive($arr1, $arr2));
// 出力結果
// array (
// 'a' =>
// array (
// 0 => 1,
// 1 => 10,
// ),
// 'b' => 2,
// 'c' => 30,
// )
array_merge
は配列が入れ子になっていた場合に再帰的に要素同士をマージすることはなくて、単純に要素全体が後から追加したもので上書きされる。
array_merge_recursive
は要素同士もマージする。
$arr1 = array("a" => 1, "b" => array("bA" => 21));
$arr2 = array("b" => array("bB" => 22), "c" => 3);
var_export(array_merge($arr1, $arr2));
// 出力結果
// array (
// 'a' => 1,
// 'b' =>
// array (
// 'bB' => 22,
// ),
// 'c' => 3,
// )
var_export(array_merge_recursive($arr1, $arr2));
// array (
// 'a' => 1,
// 'b' =>
// array (
// 'bA' => 21,
// 'bB' => 22,
// ),
// 'c' => 3,
// )
array_merge
に渡す配列のキーが数字の場合はリストの連結のような操作になる。
-> 配列に要素を追加
array_merge
関数 | PHP Manual
http://php.net/manual/ja/function.array-merge.php
Python 2014/03/17
update
メソッドを使うと、ディクショナリの要素をまとめて更新することができる。
例
dic = {'a': 1, 'b': 2}
dic.update({'b': 20, 'c': 30})
print(dic)
# => {'a': 1, 'b': 20, 'c': 30}
Ruby 2014/02/19
Hash#merge
を使うとマージした結果の新しいハッシュを生成できる。
Hash#merge!
は破壊的メソッドのバージョン。
例
hash1 = {'a' => 1, 'b' => 2}
hash2 = {'a' => 10, 'c' => 30}
merged_hash = hash1.merge(hash2)
p merged_hash
# => {"a"=>10, "b"=>2, "c"=>30}
Perl 2014/12/22
ハッシュをマージする例
my %hash1 = ('a' => 10, 'b' => 20, 'c' => 30);
my %hash2 = ('c' => 300, 'd' => 400);
my %merged = (%hash1, %hash2);
print Dumper \%merged;
# 出力結果
# $VAR1 = {
# 'c' => 300,
# 'a' => 10,
# 'b' => 20,
# 'd' => 400
# };
ハッシュへのレファレンスをマージする例
my $hash1 = {'a' => 10, 'b' => 20, 'c' => 30};
my $hash2 = {'c' => 300, 'd' => 400};
my $merged = {%$hash1, %$hash2};
print Dumper $merged;
# 出力結果
# $VAR1 = {
# 'c' => 300,
# 'a' => 10,
# 'b' => 20,
# 'd' => 400
# };