プログラミング言語の比較 > マップ(または連想配列、ハッシュ)

マップに含まれるキーと値の組を順に出力する

Java

  1. Map<String, Integer> map = Map.of(
  2. "Taro", 20,
  3. "Jiro", 17,
  4. "Saburo", 15);
  5. for (Map.Entry<String, Integer> entry : map.entrySet()) {
  6. System.out.println(String.format("%s => %d", entry.getKey(), entry.getValue()));
  7. }

Groovy

  1. def map = [Taro: 20, Jiro: 17, Saburo: 15]
  2. map.each { println "${it.key} => ${it.value}" }
  1. def map = [Taro: 20, Jiro: 17, Saburo: 15]
  2. map.each { key, value -> println "$key => $value" }
  1. def map = [Taro: 20, Jiro: 17, Saburo: 15]
  2. for (entry in map) {
  3. println "${entry.key} => ${entry.value}"
  4. }

Kotlin

  1. val m = mapOf("Taro" to 20, "Jiro" to 17, "Saburo" to 15)
  2. for ((key, value) in m) println("$key => $value")
  1. val m = mapOf("Taro" to 20, "Jiro" to 17, "Saburo" to 15)
  2. m.forEach { (key, value) -> println("$key => $value") }

Scala

  1. val map = Map("Taro" -> 20, "Jiro" -> 17, "Saburo" -> 15)
  2. for ((key, value) <- map) printf("%s => %d%n", key, value)
  1. val map = Map("Taro" -> 20, "Jiro" -> 17, "Saburo" ->15)
  2. map.foreach((e: (String, Int)) => printf("%s => %d%n", e._1, e._2))
Scala 3.0以降
  1. val map = Map("Taro" -> 20, "Jiro" -> 17, "Saburo" -> 15)
  2. for (key, value) <- map do printf("%s => %d%n", key, value)

Erlang

dict を使った場合

  1. Dict = dict:from_list([{"Taro", 20}, {"Jiro", 17}, {"Saburo", 15}]),
  2. dict:fold(fun(Key, Value, _) ->
  3. io:format("~s => ~b~n", [Key, Value])
  4. end, void, Dict).
  1. Dict = dict:from_list([{"Taro", 20}, {"Jiro", 17}, {"Saburo", 15}]),
  2. Keys = dict:fetch_keys(Dict),
  3. lists:foreach(fun(Key) ->
  4. io:format("~s => ~b~n", [Key, dict:fetch(Key, Dict)])
  5. end, Keys).

ETS を使った場合

  1. Table = ets:new(personTable, [set]),
  2. ets:insert(Table, [{"Taro", 20}, {"Jiro", 17}, {"Saburo", 15}]),
  1. [io:format("~s => ~b~n", KeyValue) || KeyValue <- ets:match(Table, {'$1', '$2'})]. %% KeyValue は長さ2のリスト
  1. [io:format("~s => ~b~n", [Key, Value]) || {Key, Value} <- ets:match_object(Table, '_')].
  1. ets:foldl(fun({Key, Value}, _) ->
  2. io:format("~s => ~b~n", [Key, Value])
  3. end, void, Table).

Haskell

  1. -- import Data.Map
  2. let map = fromList [("Taro", 20), ("Jiro", 17), ("Saburo", 15)]
  3. mapM_ putStrLn [key ++ " => " ++ (show value) | (key, value) <- toList map]

PowerShell

  1. $dict = @{Taro = 20; Jiro = 17; Saburo = 15}
  2. $dict.Keys | foreach { "$_ => " + $dict[$_] }
  1. $dict = @{Taro = 20; Jiro = 17; Saburo = 15}
  2. $dict.Keys | foreach { "$_ => $($dict[$_])" }

F#

  1. let map = Map.ofList [("Taro", 20); ("Jiro", 17); ("Saburo", 15)]
  2. Map.iter (printfn "%s => %d") map
  1. let d = dict [("Taro", 20); ("Jiro", 17); ("Saburo", 15)]
  2. for KeyValue(key, value) in d do printfn "%s => %d" key value

C#

  1. var dict = new Dictionary<string, int> { { "Taro", 20 }, { "Jiro", 17 }, { "Saburo", 15 } };
  2. foreach (var pair in dict) {
  3. Console.WriteLine($"{pair.Key} => {pair.Value}");
  4. }
C# 6.0以降
  1. var dict = new Dictionary<string, int> {
  2. ["Taro"] = 20,
  3. ["Jiro"] = 17,
  4. ["Saburo"] = 15
  5. };
  6. foreach (var pair in dict) {
  7. Console.WriteLine($"{pair.Key} => {pair.Value}");
  8. }

C++

  1. #include <map>
  2. map<string, int> m;
  3. m["Taro"] = 20;
  4. m["Jiro"] = 17;
  5. m["Saburo"] = 15;
  6. for (map<string, int>::iterator it = m.begin(); it != m.end(); it++) {
  7. cout << it->first << " => " << it->second << endl;
  8. }

Go

  1. m := map[string]int{"Taro":20, "Jiro":17, "Saburo":15}
  2. for key, value := range m {
  3. fmt.Printf("%s => %d\n", key, value)
  4. }

Rust

  1. // use std::collections::HashMap;
  2. let map = HashMap::from([("Taro", 20), ("Jiro", 17), ("Saburo", 15)]);
  3. for (name, age) in map.iter() {
  4. println!("{name} => {age}");
  5. }
  1. // use std::collections::HashMap;
  2. let map = HashMap::from([("Taro", 20), ("Jiro", 17), ("Saburo", 15)]);
  3. map.iter().for_each(|(name, age)| println!("{name} => {age}"));

Dart

  1. var map = {'Taro': 20, 'Jiro': 17, 'Saburo': 15};
  2. for (var key in map.keys) {
  3. print('$key => ${map[key]}');
  4. }

TypeScript

  1. let obj = { Taro: 20, Jiro: 17, Saburo: 15 };
  2. for (let name in obj) {
  3. console.log(`${name} => ${obj[name]}`);
  4. }
  1. let obj = { Taro: 20, Jiro: 17, Saburo: 15 };
  2. for (let [name, age] of Object.entries(obj)) {
  3. console.log(`${name} => ${age}`);
  4. }

JavaScript

  1. let obj = { Taro: 20, Jiro: 17, Saburo: 15 };
  2. for (let name in obj) {
  3. console.log(`${name} => ${obj[name]}`);
  4. }
  1. let obj = { Taro: 20, Jiro: 17, Saburo: 15 };
  2. for (let [name, age] of Object.entries(obj)) {
  3. console.log(`${name} => ${age}`);
  4. }

CoffeeScript

  1. obj = Taro: 20, Jiro: 17, Saburo: 15
  2. for name, age of obj
  3. console.log "#{name} => #{age}"
  1. obj = Taro: 20, Jiro: 17, Saburo: 15
  2. for name, age of obj
  3. console.log "#{name} => #{age}"
  1. obj =
  2. Taro: 20
  3. Jiro: 17
  4. Saburo: 15
  5. for name, age of obj
  6. console.log "#{name} => #{age}"

Ruby

  1. hash = {'Taro' => 20, 'Jiro' => 17, 'Saburo' => 15}
  2. hash.each {|key, value| puts "#{key} => #{value}" }
  1. hash = {'Taro' => 20, 'Jiro' => 17, 'Saburo' => 15}
  2. puts hash.collect {|key, value| "#{key} => #{value}" }

Python

  1. d = {'Taro': 20, 'Jiro': 17, 'Saburo': 15}
  2. for key, value in d.items():
  3. print('%s => %d' % (key, value))
  1. d = dict(Taro = 20, Jiro = 17, Saburo = 15)
  2. for key, value in d.items():
  3. print('%s => %d' % (key, value))

PHP

  1. $array = ['Taro' => 20, 'Jiro' => 17, 'Saburo' => 15];
  2. foreach ($array as $key => $value) {
  3. echo "$key => $value\n";
  4. }

Perl

  1. my %hash = (Taro => 20, Jiro => 17, Saburo => 15);
  2. while (my ($key, $value) = each %hash) {
  3. print "$key => $value\n";
  4. }

マップ内で特定の値を持つキーを全て出力する

Java

  1. Map<String, Integer> map = Map.of(
  2. "Taro", 20,
  3. "Jiro", 17,
  4. "Saburo", 15,
  5. "Hanako", 20);
  6. for (Map.Entry<String, Integer> entry : map.entrySet()) {
  7. if (entry.getValue().equals(20)) {
  8. System.out.println(entry.getKey());
  9. }
  10. }

Groovy

  1. def map = [Taro: 20, Jiro: 17, Saburo: 15, Hanako: 20]
  2. map.findAll { it.value == 20 }.each { println it.key }

Kotlin

  1. val m = mapOf("Taro" to 20, "Jiro" to 17, "Saburo" to 15, "Hanako" to 20)
  2. m.filter { (_, value) -> value == 20 }.forEach { (key, _) -> println(key) }

Scala

  1. val map = Map("Taro" -> 20, "Jiro" -> 17, "Saburo" -> 15, "Hanako" -> 20)
  2. for ((name, 20) <- map) println(name)
  1. val map = Map("Taro" -> 20, "Jiro" -> 17, "Saburo" -> 15, "Hanako" -> 20)
  2. map.foreach {
  3. case (name, 20) => println(name)
  4. case _ =>
  5. }
Scala 3.0以降
  1. val map = Map("Taro" -> 20, "Jiro" -> 17, "Saburo" -> 15, "Hanako" -> 20)
  2. for (name, 20) <- map do println(name)

Erlang

dict を使った場合

  1. Dict = dict:from_list([{"Taro", 20}, {"Jiro", 17}, {"Saburo", 15}, {"Hanako", 20}]),
  2. dict:fold(fun(Key, Value, _) ->
  3. case Value of
  4. 20 -> io:format("~s~n", [Key]);
  5. _ -> void
  6. end
  7. end, void, Dict).

ETS を使った場合

  1. Table = ets:new(personTable, [set]),
  2. ets:insert(Table, [{"Taro", 20}, {"Jiro", 17}, {"Saburo", 15}, {"Hanako", 20}]),
  1. [io:format("~s~n", [Key]) || [Key] <- ets:match(Table, {'$1', 20})].
  1. [io:format("~s~n", [Key]) || {Key, _} <- ets:match_object(Table, {'_', 20})].

Haskell

  1. -- import Data.Map
  2. let map = fromList [("Taro", 20), ("Jiro", 17), ("Saburo", 15), ("Hanako", 20)]
  3. mapM_ putStrLn [key | (key, value) <- toList map, value == 20]
Cabal の MissingH を使った場合
  1. -- import Data.Map
  2. -- import Data.Map.Utils
  3. let map = fromList [("Taro", 20), ("Jiro", 17), ("Saburo", 15), ("Hanako", 20)]
  4. mapM_ putStrLn $ flippedLookupM 20 map

PowerShell

  1. $dict = @{Taro = 20; Jiro = 17; Saburo = 15; Hanako = 20}
  2. $dict.Keys | where { $dict[$_] -eq 20 }

F#

  1. let map = Map.ofList [("Taro", 20); ("Jiro", 17); ("Saburo", 15); ("Hanako", 20)]
  2. map |> Map.filter (fun _ value -> value = 20) |> Map.iter (fun key _ -> printfn "%s" key)
  1. let d = dict [("Taro", 20); ("Jiro", 17); ("Saburo", 15); ("Hanako", 20)]
  2. for KeyValue(key, value) in d do if value = 20 then printfn "%s" key

C#

  1. // using System.Linq;
  2. var dict = new Dictionary<string, int> { { "Taro", 20 }, { "Jiro", 17 }, { "Saburo", 15 }, { "Hanako", 20 } };
  3. var names = dict.Where(e => e.Value == 20).Select(e => e.Key); // names の型は IEnumerable<string>
  4. foreach (var name in names) {
  5. Console.WriteLine(name);
  6. }
  1. // using System.Linq;
  2. var dict = new Dictionary<string, int> { { "Taro", 20 }, { "Jiro", 17 }, { "Saburo", 15 }, { "Hanako", 20 } };
  3. var names = from e in dict where e.Value == 20 select e.Key; // names の型は IEnumerable<string>
  4. foreach (var name in names) {
  5. Console.WriteLine(name);
  6. }

Go

  1. m := map[string]int{"Taro":20, "Jiro":17, "Saburo":15, "Hanako":20}
  2. for key, value := range m {
  3. if value == 20 {
  4. fmt.Printf("%s\n", key)
  5. }
  6. }

Rust

  1. // use std::collections::HashMap;
  2. let map = HashMap::from([("Taro", 20), ("Jiro", 17), ("Saburo", 15), ("Hanako", 20)]);
  3. map.iter().filter(|&(_, age)| age == &20).for_each(|(name, _)| println!("{name}"));
  1. // use std::collections::HashMap;
  2. let map = HashMap::from([("Taro", 20), ("Jiro", 17), ("Saburo", 15), ("Hanako", 20)]);
  3. map.iter().for_each(|entry| {
  4. match entry {
  5. (name, 20) => println!("{name}"),
  6. _ => (),
  7. }
  8. });

Dart

  1. var map = {'Taro': 20, 'Jiro': 17, 'Saburo': 15, 'Hanako': 20};
  2. for (var key in map.keys) {
  3. if (map[key] == 20) {
  4. print(key);
  5. }
  6. }

TypeScript

  1. let obj = { Taro: 20, Jiro: 17, Saburo: 15, Hanako: 20 };
  2. for (let name in obj) {
  3. if (obj[name] === 20) {
  4. console.log(name);
  5. }
  6. }
  1. let obj = { Taro: 20, Jiro: 17, Saburo: 15, Hanako: 20 };
  2. Object.entries(obj).filter(([, age]) => age === 20).forEach(([name]) => console.log(name));

JavaScript

  1. let obj = { Taro: 20, Jiro: 17, Saburo: 15, Hanako: 20 };
  2. for (let name in obj) {
  3. if (obj[name] === 20) {
  4. console.log(name);
  5. }
  6. }
  1. let obj = { Taro: 20, Jiro: 17, Saburo: 15, Hanako: 20 };
  2. Object.entries(obj).filter(([, age]) => age === 20).forEach(([name]) => console.log(name));

CoffeeScript

  1. obj = Taro: 20, Jiro: 17, Saburo: 15, Hanako: 20
  2. for name, age of obj
  3. if age == 20
  4. console.log name
  1. obj = Taro: 20, Jiro: 17, Saburo: 15, Hanako: 20
  2. for name, age of obj
  3. if age == 20
  4. console.log name
  1. obj =
  2. Taro: 20
  3. Jiro: 17
  4. Saburo: 15
  5. Hanako: 20
  6. for name, age of obj
  7. if age == 20
  8. console.log name

Ruby

  1. hash = {'Taro' => 20, 'Jiro' => 17, 'Saburo' => 15, 'Hanako' => 20}
  2. hash.each {|name, age| puts name if age == 20 }
  1. hash = {'Taro' => 20, 'Jiro' => 17, 'Saburo' => 15, 'Hanako' => 20}
  2. hash.select {|name, age| age == 20 }.each {|name, age| puts name }

Python

  1. d = {'Taro': 20, 'Jiro': 17, 'Saburo': 15, 'Hanako': 20}
  2. for name, age in d.items():
  3. if age == 20:
  4. print(name)
  1. d = {'Taro': 20, 'Jiro': 17, 'Saburo': 15, 'Hanako': 20}
  2. for name in (name for name, age in d.items() if age == 20):
  3. print(name)

PHP

  1. $array = ['Taro' => 20, 'Jiro' => 17, 'Saburo' => 15, 'Hanako' => 20];
  2. foreach ($array as $key => $value) {
  3. if ($value === 20) {
  4. echo "$key\n";
  5. }
  6. }

Perl

  1. my %hash = (Taro => 20, Jiro => 17, Saburo => 15);
  2. while (my ($key, $value) = each %hash) {
  3. print "$key => $value\n" if $value == 20;
  4. }

キーのリストと値のリストからマップを作る

Java

  1. List<String> keys = Arrays.asList("Taro", "Jiro", "Saburo");
  2. List<Integer> values = Arrays.asList(20, 17, 15);
  3. Map<String, Integer> map = new HashMap<>();
  4. Iterator<String> keyIter = keys.iterator();
  5. Iterator<Integer> valueIter = values.iterator();
  6. while (keyIter.hasNext()) {
  7. map.put(keyIter.next(), valueIter.next());
  8. }

Groovy

  1. keys = ['Taro', 'Jiro', 'Saburo']
  2. values = [20, 17, 15]
  3. map = [:]
  4. [keys, values].transpose().each { map.put it[0], it[1] }

Kotlin

  1. val keys = listOf("Taro", "Jiro", "Saburo")
  2. val values = listOf(20, 17, 15)
  3. val map = (keys zip values).toMap()

Scala

  1. val keys = Array("Taro", "Jiro", "Saburo")
  2. val values = Array(20, 17, 15)
  3. val map = Map(keys zip values: _*)

Erlang

dict を使った場合

  1. Keys = ["Taro", "Jiro", "Saburo"],
  2. Values = [20, 17, 15],
  3. Dict = dict:from_list(lists:zip(Keys, Values)).

ETS を使った場合

  1. Keys = ["Taro", "Jiro", "Saburo"],
  2. Values = [20, 17, 15],
  3. Table = ets:new(personTable, [set]),
  4. ets:insert(Table, lists:zip(Keys, Values)).

Haskell

  1. -- import Data.Map
  2. let keys = ["Taro", "Jiro", "Saburo"]
  3. let values = [20, 17, 15]
  4. let map = fromList $ zip keys values

F#

  1. let keys = ["Taro"; "Jiro"; "Saburo"]
  2. let values = [20; 17; 15]
  3. let d = dict(List.zip keys values)
  1. let keys = ["Taro"; "Jiro"; "Saburo"]
  2. let values = [20; 17; 15]
  3. let map = Map.ofSeq <| Seq.zip keys values

C#

  1. // using System.Linq;
  2. string[] keys = {"Taro", "Jiro", "Saburo"};
  3. int[] values = {20, 17, 15};
  4. Dictionary<string, int> dict = keys.Zip(values).ToDictionary(t => t.First, t => t.Second);

Go

  1. keys := [...]string{"Taro", "Jiro", "Saburo"}
  2. values := [...]int{20, 17, 15}
  3. m := make(map[string]int)
  4. for i, key := range keys {
  5. m[key] = values[i]
  6. }

Rust

  1. // use std::iter::zip;
  2. // use std::collections::HashMap;
  3. let arr1 = ["Taro", "Jiro", "Saburo"];
  4. let arr2 = [20, 17, 15];
  5. let map: HashMap<_, _> = zip(arr1, arr2).collect();

Dart

  1. var keys = ['Taro', 'Jiro', 'Saburo'];
  2. var values = [20, 17, 15];
  3. var map = Map.fromIterables(keys, values);

TypeScript

  1. let keys = ['Taro', 'Jiro', 'Saburo'];
  2. let values = [20, 17, 15];
  3. let obj = {};
  4. for (let i in keys) {
  5. obj[keys[i]] = values[i];
  6. }
Underscore を使った場合
  1. // import * as _ from 'underscore';
  2. let keys = ['Taro', 'Jiro', 'Saburo'];
  3. let values = [20, 17, 15];
  4. let obj = {};
  5. _.zip(keys, values).forEach(([key, value]) => obj[key] = value);

JavaScript

  1. let keys = ['Taro', 'Jiro', 'Saburo'];
  2. let values = [20, 17, 15];
  3. let obj = {};
  4. for (let i in keys) {
  5. obj[keys[i]] = values[i];
  6. }
Underscore を使った場合
  1. // const _ = require('underscore');
  2. let keys = ['Taro', 'Jiro', 'Saburo'];
  3. let values = [20, 17, 15];
  4. let obj = {};
  5. _.zip(keys, values).forEach(([key, value]) => obj[key] = value);

CoffeeScript

  1. keys = ['Taro', 'Jiro', 'Saburo']
  2. values = [20, 17, 15]
  3. obj = {}
  4. for key, i in keys
  5. obj[key] = values[i]
Underscore を使った場合
  1. # _ = require 'underscore'
  2. keys = ['Taro', 'Jiro', 'Saburo']
  3. values = [20, 17, 15]
  4. obj = {}
  5. _.zip(keys, values).forEach ([key, value]) -> obj[key] = value

Ruby

  1. keys = ['Taro', 'Jiro', 'Saburo']
  2. values = [20, 17, 15]
  3. hash = Hash[*keys.zip(values).flatten]

Python

  1. keys = ['Taro', 'Jiro', 'Saburo']
  2. values = [20, 17, 15]
  3. d = dict(zip(keys, values))

PHP

  1. $keys = ['Taro', 'Jiro', 'Saburo'];
  2. $values = [20, 17, 15];
  3. $array = array_combine($keys, $values);

Perl

  1. my @keys = ('Taro', 'Jiro', 'Saburo');
  2. my @values = (20, 17, 15);
  3. my %hash = map { $keys[$_], $values[$_] } 0 .. $#keys;

マップのマップから値を取得する(該当のキーがない場合は null)

Java

  1. Map<String, Map<String, Object>> map = new HashMap<>();
  2. // (中略)
  3. Object value;
  4. try {
  5. value = map.get("Jiro").get("age");
  6. } catch (NullPointerException e) {
  7. value = null;
  8. }

Groovy

  1. def map = [Taro: [name: 'Taro', age: 20],
  2. Jiro: [name: 'Jiro', age: 17],
  3. Saburo: [name: 'Saburo', age: 15]]
  4. def value = map.Jiro?.age
  1. def map = [Taro: [name: 'Taro', age: 20],
  2. Jiro: [name: 'Jiro', age: 17],
  3. Saburo: [name: 'Saburo', age: 15]]
  4. def value = map.get('Jiro')?.get('age')

Kotlin

  1. val map = mapOf(
  2. "Taro" to mapOf("name" to "Taro", "age" to 20),
  3. "Jiro" to mapOf("name" to "Jiro", "age" to 17),
  4. "Saburo" to mapOf("name" to "Saburo", "age" to 15)
  5. )
  6. val value = map["Jiro"]?.get("age")

Scala

  1. val map = Map(
  2. "Taro" -> Map("name" -> "Taro", "age" -> 20),
  3. "Jiro" -> Map("name" -> "Jiro", "age" -> 17),
  4. "Saburo" -> Map("name" -> "Saburo", "age" -> 15)
  5. )
  1. val value = map get "Jiro" flatMap (_ get "age") // value の型は Option[Any]
  1. val value = for (subMap <- map get "Jiro"; age <- subMap get "age") yield age // value の型は Option[Any]
Scala 3.0以降
  1. extension [A](opt: Option[A]) // Haskell 風の演算子を使えるようにする
  2. def >>=[B](f: A => Option[B]) = opt flatMap f
  3. val value = map get "Jiro" >>= (_ get "age") // value の型は Option[Any]

Haskell

  1. -- import Prelude hiding (lookup)
  2. -- import Data.Map
  3. let map = fromList [("Taro", fromList [("name", "Taro"), ("age", "20")]),
  4. ("Jiro", fromList [("name", "Jiro"), ("age", "17")]),
  5. ("Saburo", fromList [("name", "Saburo"), ("age", "15")])
  6. ]
  1. let value = lookup "Jiro" map >>= lookup "age" -- value の型は Maybe String
  1. let value = do subMap <- lookup "Jiro" map -- value の型は Maybe String
  2. lookup "age" subMap

PowerShell

  1. $dict = @{
  2. Taro = @{name = 'Taro'; age = 20};
  3. Jiro = @{name = 'Jiro'; age = 17};
  4. Saburo = @{name = 'Saburo'; age = 15}
  5. }
  6. $value = $dict['Jiro']['age']
  1. $dict = @{
  2. Taro = @{name = 'Taro'; age = 20};
  3. Jiro = @{name = 'Jiro'; age = 17};
  4. Saburo = @{name = 'Saburo'; age = 15}
  5. }
  6. $value = $dict.Jiro.age

F#

  1. let map = Map.ofList [
  2. ("Taro", Map.ofList [("name", box "Taro" ); ("age", box 20)]);
  3. ("Jiro", Map.ofList [("name", box "Jiro" ); ("age", box 17)]);
  4. ("Saburo", Map.ofList [("name", box "Saburo"); ("age", box 15)])
  5. ]
  1. let value = map |> Map.tryFind "Jiro" |> Option.bind (Map.tryFind "age") // value の型は obj option
  1. let (>>=) opt f = Option.bind f opt // Haskell 風に演算子を定義する
  2. let value = Map.tryFind "Jiro" map >>= Map.tryFind "age" // value の型は obj option

C#

C# 6.0以降
  1. var dict = new Dictionary<string, Dictionary<string, object>> {
  2. {"Taro", new Dictionary<string, object> {{"name", "Taro"}, {"age", 20}}},
  3. {"Jiro", new Dictionary<string, object> {{"name", "Jiro"}, {"age", 17}}},
  4. {"Saburo", new Dictionary<string, object> {{"name", "Saburo"}, {"age", 15}}}
  5. };
  6. object value = dict["Jiro"]?["age"];

Go

  1. m := make(map[string]map[string]interface{})
  2. m["Taro"] = map[string]interface{}{"name":"Taro", "age":20}
  3. m["Jiro"] = map[string]interface{}{"name":"Jiro", "age":17}
  4. m["Saburo"] = map[string]interface{}{"name":"Saburo", "age":15}
  5. value := m["Jiro"]["age"]

Rust

  1. // use std::collections::HashMap;
  2. let map = HashMap::from([
  3. ("Taro", HashMap::from([("name", "Taro"), ("age", "20")])),
  4. ("Jiro", HashMap::from([("name", "Jiro"), ("age", "20")])),
  5. ("Saburo", HashMap::from([("name", "Saburo"), ("age", "20")]))
  6. ]);
  7. let value = map.get("Jiro").unwrap().get("age").unwrap();

Dart

  1. var map = {
  2. 'Taro': {'name': 'Taro', 'age': 20},
  3. 'Jiro': {'name': 'Jiro', 'age': 17},
  4. 'Saburo': {'name': 'Saburo', 'age': 15}
  5. };
  6. var map2 = map.containsKey('Jiro') ? map['Jiro'] : {};
  7. var value = map2['age'];

TypeScript

  1. let obj = {
  2. Taro: { name: 'Taro', age: 20 },
  3. Jiro: { name: 'Jiro', age: 17 },
  4. Saburo: { name: 'Saburo', age: 15 }
  5. };
  6. let value = obj.Jiro?.age;

JavaScript

  1. let obj = {
  2. Taro: { name: 'Taro', age: 20 },
  3. Jiro: { name: 'Jiro', age: 17 },
  4. Saburo: { name: 'Saburo', age: 15 }
  5. };
  6. let value = obj.Jiro?.age;

CoffeeScript

  1. obj =
  2. Taro: { name: 'Taro', age: 20 }
  3. Jiro: { name: 'Jiro', age: 17 }
  4. Saburo: { name: 'Saburo', age: 15 }
  5. console.log obj.Jiro?.age

Ruby

  1. map = {
  2. 'Taro' => {name: 'Taro', age: 20},
  3. 'Jiro' => {name: 'Jiro', age: 17},
  4. 'Saburo' => {name: 'Saburo', age: 15}
  5. }
  6. value = map.dig('Jiro', :age)

Python

  1. d = {
  2. 'Taro': {'name': 'Taro', 'age': 20},
  3. 'Jiro': {'name': 'Jiro', 'age': 17},
  4. 'Saburo': {'name': 'Saburo', 'age': 15}
  5. }
  6. value = d.get('Jiro', {}).get('age')

PHP

  1. $array = [
  2. 'Taro' => ['name' => 'Taro', 'age' => 20],
  3. 'Jiro' => ['name' => 'Jiro', 'age' => 17],
  4. 'Saburo' => ['name' => 'Saburo', 'age' => 15]
  5. ];
  6. $value = $array['Jiro']['age'];

Perl

キーが自動生成されても構わない場合
  1. my %hash = (
  2. Taro => {name => 'Taro', age => 20},
  3. Jiro => {name => 'Jiro', age => 17},
  4. Saburo => {name => 'Saburo', age => 15}
  5. );
  6. my $value = $hash{Jiro}{age};
キーが自動生成されると困る場合
  1. my %hash = (
  2. Taro => {name => 'Taro', age => 20},
  3. Jiro => {name => 'Jiro', age => 17},
  4. Saburo => {name => 'Saburo', age => 15},
  5. );
  6. my $result = ($hash{Jiro} or {})->{age};

戻る

目次

マップに含まれるキーと値の組を順に出力する Java Groovy Kotlin Scala Erlang Haskell PowerShell F# C# C++ Go Rust Dart TypeScript JavaScript CoffeeScript Ruby Python PHP Perl
マップ内で特定の値を持つキーを全て出力する Java Groovy Kotlin Scala Erlang Haskell PowerShell F# C# C++ Go Rust Dart TypeScript JavaScript CoffeeScript Ruby Python PHP Perl
キーのリストと値のリストからマップを作る Java Groovy Kotlin Scala Erlang Haskell PowerShell F# C# C++ Go Rust Dart TypeScript JavaScript CoffeeScript Ruby Python PHP Perl
マップのマップから値を取得する(該当のキーがない場合は null) Java Groovy Kotlin Scala Erlang Haskell PowerShell F# C# C++ Go Rust Dart TypeScript JavaScript CoffeeScript Ruby Python PHP Perl