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

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

Java

Java 7以降
  1. Map<String, Integer> map = new HashMap<>();         // 右辺の < > 内は省略している
  2. map.put("Taro"20);
  3. map.put("Jiro"17);
  4. map.put("Saburo"15);
  5. for (Map.Entry<String, Integer> entry : map.entrySet()) {
  6.     System.out.println(String.format("%s => %d", entry.getKey(), entry.getValue()));
  7. }
Java 6まで
  1. Map<String, Integer> map = new HashMap<String, Integer>();
  2. map.put("Taro"20);
  3. map.put("Jiro"17);
  4. map.put("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. }

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))

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#

C# 3.0以降
  1. var dict = new Dictionary<stringint> { { "Taro"20 }, { "Jiro"17 }, { "Saburo"15 } };
  2. foreach (var pair in dict) {
  3.     Console.WriteLine(string.Format("{0} => {1}", pair.Key, pair.Value));
  4. }
C# 2.0
  1. IDictionary<stringint> dict = new Dictionary<stringint>();
  2. dict.Add("Taro"20);
  3. dict.Add("Jiro"17);
  4. dict.Add("Saburo"15);
  5. foreach (KeyValuePair<stringint> pair in dict) {
  6.     Console.WriteLine(string.Format("{0} => {1}", pair.Key, pair.Value));
  7. }

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. }

Dart

  1. Map<String, int> map = {'Taro'20'Jiro'17'Saburo'15};
  2. for (String key in map.getKeys()) {
  3.     print('$key => ${map[key]}');
  4. }

ActionScript

  1. var obj:Object = {Taro: 20, Jiro: 17, Saburo: 15};
  2. for (var name:String in obj) {
  3.     trace(name + ' => ' + obj[name]);
  4. }

JavaScript

  1. var obj = {Taro: 20, Jiro: 17, Saburo: 15};
  2. for (var name in obj) {
  3.     alert(name + ' => ' + obj[name]);
  4. }
JavaScript 1.7(Firefox 2.0)以降
  1. var obj = {Taro: 20, Jiro: 17, Saburo: 15};
  2. for (let[name, age] in obj) {
  3.     alert(name + ' => ' + age);
  4. }

CoffeeScript

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

Lua

  1. t = { Taro=20, Jiro=17, Saburo=15 }
  2. for name, age in pairs(t) do
  3.     print(string.format('%s => %d', name, age))
  4. end
  1. t = { Taro=20, Jiro=17, Saburo=15 }
  2. for name, age in next, t, nil do
  3.     print(string.format('%s => %d', name, age))
  4. end
  1. t = { Taro=20, Jiro=17, Saburo=15 }
  2. table.foreach(t,
  3.     function(name, age) print(string.format('%s => %d', name, age)) end)

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 = 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

Java 7以降
  1. Map<String, Integer> map = new HashMap<>();         // 右辺の < > 内は省略している
  2. map.put("Taro"20);
  3. map.put("Jiro"17);
  4. map.put("Saburo"15);
  5. map.put("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 }

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. }

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#

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

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. }

Dart

  1. Map<String, int> map = {'Taro'20'Jiro'17'Saburo'15'Hanako'20};
  2. for (String key in map.getKeys()) {
  3.     if (map[key] == 20) {
  4.         print(key);
  5.     }
  6. }

ActionScript

  1. var obj:Object = {Taro: 20, Jiro: 17, Saburo: 15, Hanako: 20};
  2. for (var name:String in obj) {
  3.     if (obj[name] === 20) {
  4.         trace(name);
  5.     }
  6. }

JavaScript

  1. var obj = {Taro: 20, Jiro: 17, Saburo: 15, Hanako: 20};
  2. for (var name in obj) {
  3.     if (obj[name] === 20) {
  4.         alert(name);
  5.     }
  6. }
JavaScript 1.7(Firefox 2.0)以降
  1. var obj = {Taro: 20, Jiro: 17, Saburo: 15, Hanako: 20};
  2. for (let[name, age] in obj) {
  3.     if (age === 20) {
  4.         alert(name);
  5.     }
  6. }

CoffeeScript

  1. obj = Taro: 20, Jiro: 17, Saburo: 15, Hanako: 20
  2. for name, age of obj
  3.     if age == 20
  4.         alert name
  1. obj = {Taro: 20, Jiro: 17, Saburo: 15, Hanako: 20}
  2. for name, age of obj
  3.     if age == 20
  4.         alert 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.         alert name

Lua

  1. t = { Taro=20, Jiro=17, Saburo=15, Hanako=20 }
  2. for name, age in pairs(t) do
  3.     if age == 20 then
  4.         print(name)
  5.     end
  6. end

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 = 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

Java 7以降
  1. List<String> keys = Arrays.asList("Taro""Jiro""Saburo");
  2. List<Integer> values = Arrays.asList(201715);
  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 = [201715]
  3. map = [:]
  4. [keys, values].transpose().each { map.put it[0], it[1] }

Scala

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

Erlang

dict を使った場合

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

ETS を使った場合

  1. Keys = ["Taro""Jiro""Saburo"],
  2. Values = [201715],
  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 = [201715]
  4. let map = fromList $ zip keys values

F#

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

C#

C# 4.0以降
  1. string[] keys = {"Taro""Jiro""Saburo"};
  2. int[] values = {201715};
  3. var dict = new Dictionary<stringint>();
  4. foreach (var tuple in keys.Zip(values, Tuple.Create)) {
  5.     dict[tuple.Item1] = tuple.Item2;
  6. }
  1. string[] keys = {"Taro""Jiro""Saburo"};
  2. int[] values = {201715};
  3. var dict = new Dictionary<stringint>();
  4. foreach (var pair in keys.Zip(values, (key, value) => new KeyValuePair<stringint>(key, value))) {
  5.     dict[pair.Key] = pair.Value;
  6. }

Go

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

Dart

  1. List<String> keys = ['Taro''Jiro''Saburo'];
  2. List<int> values = [201715];
  3. var map = new Map<String, int>();
  4. for (int i = 0; i < keys.length; i++) {
  5.     map[keys[i]] = values[i];
  6. }

ActionScript

  1. var keys:Array = ['Taro''Jiro''Saburo'];
  2. var values:Array = [201715];
  3. var obj:Object = {};
  4. for (var i:* in keys) {
  5.     obj[keys[i]] = values[i];
  6. }

JavaScript

  1. var keys = ['Taro''Jiro''Saburo'];
  2. var values = [201715];
  3. var obj = {};
  4. for (var i in keys) {
  5.     obj[keys[i]] = values[i];
  6. }
prototype.js を使った場合
  1. var keys = ['Taro''Jiro''Saburo'];
  2. var values = [201715];
  3. var obj = {};
  4. keys.zip(values).each(function (pair, i) { return obj[pair[0]] = pair[1]; });
MochiKit を使った場合
  1. var keys = ['Taro''Jiro''Saburo'];
  2. var values = [201715];
  3. var obj = {};
  4. forEach(izip(keys, values), function (pair) { obj[pair[0]] = pair[1]; });

CoffeeScript

  1. keys = ['Taro''Jiro''Saburo']
  2. values = [201715]
  3. obj = {}
  4. for key, i in keys
  5.     obj[key] = values[i]
prototype.js を使った場合
  1. keys = ['Taro''Jiro''Saburo']
  2. values = [201715]
  3. obj = {}
  4. keys.zip(values).each ([key, value], i) -> obj[key] = value
MochiKit を使った場合
  1. keys = ['Taro''Jiro''Saburo']
  2. values = [201715]
  3. obj = {}
  4. forEach izip(keys, values), ([key, value]) -> obj[key] = value

Lua

  1. keys = { 'Taro''Jiro''Saburo' }
  2. values = { 201715 }
  3. result = {}
  4. for i, key in ipairs(keys) do
  5.     result[key] = values[i]
  6. end

Ruby

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

Python

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

PHP

  1. $keys = array('Taro''Jiro''Saburo');
  2. $values = array(201715);
  3. $array = array_combine($keys$values);

Perl

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

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

Java

Java 7以降
  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')

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. implicit def bindableOption[A](opt: Option[A]) = new {                                  // Haskell 風の演算子を使えるようにする
  2.     def >>=[B](f: A => Option[B]) = opt flatMap f
  3. }
  4. val value = map get "Jiro" >>= (_ get "age")                                            // value の型は Option[Any]
  1. val value = for (subMap <- map get "Jiro"; age <- subMap get "age"yield 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# 3.0以降
  1. var dict = new Dictionary<string, Dictionary<stringobject>> {
  2.     {"Taro",   new Dictionary<stringobject> {{"name""Taro"},   {"age"20}}},
  3.     {"Jiro",   new Dictionary<stringobject> {{"name""Jiro"},   {"age"17}}},
  4.     {"Saburo"new Dictionary<stringobject> {{"name""Saburo"}, {"age"15}}}
  5. };
  6. object value;
  7. try {
  8.     value = dict["Jiro"]["age"];
  9. catch (KeyNotFoundException) {
  10.     value = null;
  11. }

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"]

Dart

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

ActionScript

  1. var obj:Object = {
  2.     Taro:   {name: 'Taro',   age: 20},
  3.     Jiro:   {name: 'Jiro',   age: 17},
  4.     Saburo: {name: 'Saburo', age: 15}
  5. };
  6. var value:* = (obj.Jiro || {}).age || null;

JavaScript

  1. var obj = {
  2.     Taro:   {name: 'Taro',   age: 20},
  3.     Jiro:   {name: 'Jiro',   age: 17},
  4.     Saburo: {name: 'Saburo', age: 15}
  5. };
  6. var value = (obj.Jiro || {}).age || null;

CoffeeScript

  1. obj =
  2.     Taro:   {name: 'Taro',   age: 20}
  3.     Jiro:   {name: 'Jiro',   age: 17}
  4.     Saburo: {name: 'Saburo', age: 15}
  5. alert (obj.Jiro || {}).age || null

Lua

  1. t = {
  2.     Taro  ={ name='Taro',   age=20 },
  3.     Jiro  ={ name='Jiro',   age=17 },
  4.     Saburo={ name='Saburo', age=15 }
  5. }
  6. value = (t['Jiro'or {})['age']

Ruby

Ruby 1.9以降
  1. map = {
  2.   'Taro'   => {name: 'Taro',   age: 20},
  3.   'Jiro'   => {name: 'Jiro',   age: 17},
  4.   'Saburo' => {name: 'Saburo', age: 15}
  5. }
  6. value = (map['Jiro'or {})[:age]
Ruby 1.8まで
  1. map = {
  2.   'Taro'   => {:name => 'Taro',   :age => 20},
  3.   'Jiro'   => {:name => 'Jiro',   :age => 17},
  4.   'Saburo' => {:name => 'Saburo':age => 15}
  5. }
  6. value = (map['Jiro'or {})[: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 = array(
  2.     'Taro'   => array('name' => 'Taro',   'age' => 20),
  3.     'Jiro'   => array('name' => 'Jiro',   'age' => 17),
  4.     'Saburo' => array('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 Scala Erlang Haskell PowerShell F# C# C++ Go Dart ActionScript JavaScript CoffeeScript Lua Ruby Python PHP Perl
マップ内で特定の値を持つキーを全て出力する Java Groovy Scala Erlang Haskell PowerShell F# C# C++ Go Dart ActionScript JavaScript CoffeeScript Lua Ruby Python PHP Perl
キーのリストと値のリストからマップを作る Java Groovy Scala Erlang Haskell PowerShell F# C# C++ Go Dart ActionScript JavaScript CoffeeScript Lua Ruby Python PHP Perl
マップのマップから値を取得する(該当のキーがない場合は null) Java Groovy Scala Erlang Haskell PowerShell F# C# C++ Go Dart ActionScript JavaScript CoffeeScript Lua Ruby Python PHP Perl