[C#]連想配列の中に配列を入れたい

このQ&Aのポイント
  • C#で連想配列の中に配列を入れる方法がわかりません。
  • 試しにDictionary<string, Dictionary<string, string>>を使用して値を格納しましたが、エラーが発生しています。
  • 指定したキーがディレクトリ内に存在しないというエラーメッセージが表示されます。どのように書けば良いでしょうか?
回答を見る
  • ベストアンサー

[C#]連想配列の中に配列を入れたい

いつもありがとうございます。 value["A"]["0"] = "a0"; value["A"]["1"] = "a1"; value["A"]["2"] = "a2"; value["B"]["0"] = "b0"; value["B"]["1"] = "b1"; .... みたいなのを作りたいと考えているのですが以下のようにやっても、できませんでした。 何が悪いのかがわかりません。 Dictionary<string, Dictionary<string, string>> value = new Dictionary<string, Dictionary<string, string>>(); value["A"]["0"] = "a0"; ← value["A"]["1"] = "a1"; value["A"]["2"] = "a2"; value["B"]["0"] = "b0"; value["B"]["1"] = "b1"; ... 実行すると、←のところで、 「指定されたキーはディレクトリ内に存在しませんでした。」 とエラーが出てしまいます。 上記のような配列を作りたい時はどのように書けばいいのでしょうか? よろしくお願いします。

  • macus
  • お礼率76% (331/433)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

Dictionary<string, Dictionary<string, string>> value = new Dictionary<string, Dictionary<string, string>>(); value["A"] = new Dictionary<string, string>(); // これと value["B"] = new Dictionary<string, string>(); // これを追加 value["A"]["0"] = "a0"; value["A"]["1"] = "a1"; value["A"]["2"] = "a2"; value["B"]["0"] = "b0"; value["B"]["1"] = "b1";

macus
質問者

お礼

さっそくの回答ありがとうございます!!! できました!!! 2,3時間、色々試してどうしても出来なかったので、 凄く助かりました!ありがとうございます。

関連するQ&A

  • JavaScriptの連想配列について

    myArray = new Array();  myArray["A001"] = new Array();   myArray["A001"]["B001"] = "B001";   myArray["A001"]["B002"] = new Array();    myArray["A001"]["B002"]["C001"] = "C001";    myArray["A001"]["B002"]["C002"] = "C002";  myArray["A002"] = "A002"; JavaScriptの連想配列について質問させて頂きます。 例えば上記のような配列があったとして、値とキーはそのままで "C001" と "C002" の"B002"配列への格納順序だけ入れ替えたい場合、 どのように実装すればよろしいでしょうか? ちなみにキーや値はサンプルで実際にはsort出来るルールはありません。。。 ※入れ替え後のイメージ --------------------------------------------------------------------- myArray = new Array();  myArray["A001"] = new Array();   myArray["A001"]["B001"] = "B001";   myArray["A001"]["B002"] = new Array();    myArray["A001"]["B002"]["C002"] = "C002"; ←格納順序が    myArray["A001"]["B002"]["C001"] = "C001";  入れ替わった  myArray["A002"] = "A002"; ---------------------------------------------------------------------

  • javaの連想配列について教えてください

    お世話になります。 javaの連想配列について教えてください。 やりたいことは下記のようなデータを作成したいです。 ================================================ {   "shcool" : {          "class" : "A",          "yamada" : {                "class" : "AA",                "height" : 165,                "weight" : 60         },          "saitou" : {                "class" : "AB",                "height" : 170,                "weight" : 65         }   } } ================================================ 下記HPを参考してHashMap+HashMapで作成したのですがうまくいきません。 http://www.atmarkit.co.jp/fjava/javatips/081java010.html Map<String, Object> map = new HashMap<String, Object>(); map.put("school", new HashMap<String, Object>()); ((Map) map.get("school")).put("class", "A"); ((Map) map.get("school")).put("yamada", new HashMap<String, Object>()); ((Map) map.get("school")).get("yamada").put("class", "AB"); ・・・ としても下記エラーとなってしまいます。 ----------------------------------------------------- エラー: シンボルを見つけられません ((Map) map.get("school")).get("yamada").put("class", "AB");                            ^ シンボル: メソッド put(String,String) ----------------------------------------------------- 途中のschoolのvalueにHashMapを入れるところまではうまくいっているようですが、 yamadaのvalueにHashMapを入れて.put()の仕方がわかりません。。。 上記データをHashMap+HashMapで作成するにはどうしたらよいでしょうか? ぜひご教示いただけると嬉しいです。 よろしくお願いします。

    • ベストアンサー
    • Java
  • 連想配列を処理するにあたって

    お世話になっております。 連想配列について質問させて頂きます。 以下のような、キーに文字列、インデックスに数字を指定している連想配列があるとします。 Array([あいうえお] => 0 [かきくけこ] => 0 [さしすせそ] => 0 [たちつてと] => 0) この連想配列のキーを指定し、そのキーに対するインデックスの数字を別の数字に置換したく思っています。 仮に、「あいうえお」のキーを指定して、そのキーに対するインデックス「0」を「1」に変更したいのです。 array_fill()やarray_fill_keys()などの関数を調べて試してみましたができませんでした。確実にプログラムが間違っているとしか言いようがないのですが、どなたかアドバイスをお願い致します。 以下のコード中にその処理を持ってきたく思っています。 /* foreach($mystery_noun as $mystery_key => $mystery_value){ __foreach($mecab_noun as $mecab_key => $mecab_value){ ____if($mystery_key == $mecab_key){ ______ここにその質問の処理を記述する。 ____} __} } */ ある連想配列のキー(文字列)が一致した場合、そのキーに対するインデックスを0→1に変更します。 尚、$mystery_noun、$mecab_nounの連想配列全てのインデックスには、それぞれ1,0が格納されています。

    • ベストアンサー
    • PHP
  • C#のDictionaryについて

    C#のDictionaryで、Keyの部分に配列のようなものを入れることは可能ですか? たとえば、(3.0, 4.0, 5.0)のような三つの値の組(順番も重要)をKeyに入れ、その値の組を指定することで、Valueの値を取得するということは可能でしょうか?

  • ジャグ配列のソートについて(C#)

    String[][] hairetu = new String[5][]; for (i = 0; i < 5; i++) { hairetu[i] = new String[5]; } hairetu[0][0] = "あ"; hairetu[1][0] = "い"; hairetu[2][0] = "う"; hairetu[3][0] = "え"; hairetu[4][0] = "お"; このような配列をソートしたいのですが、Array.Sort(hairetu);ではエラーになってしまいました どのように指定すれば良いのでしょうか?

  • 【C#】ハッシュテーブル(連想配列)の値が配列の場合について

    はじめまして。 今回初めてハッシュテーブルを利用するのですが、不明な点があり、こちらへ質問を投稿させていただきました。 Hashtable ht = new Hashtable(); string[] str = {"明日","明後日","明々後日"}; ht["after"] = str; 以上のようにキーafterの値へ配列の代入を行ったのですが、値の配列を直接操作する方法がわからず困っております。 //値の[0]より文字列「明日」を取り出したい string val = (string[])ht["after"][0]; ためしに上記の様に書いてみたものの、ビルド時に「角かっこ [] 付きインデックスを 'object' 型の式に適用することはできません。」というエラーが発生します。 初歩的な内容かと思いますが、お分かりになる方がおりましたら、ご回答のほどよろしくお願いいたします。 環境 VisualC# 2005 Express Edition

  • 連想配列を含むヒアドキュメントの書き方

    連想配列を含むヒアドキュメントの書き方を教えてください。 以下のコードならうまく行きました。 -(1)-------------------------- $SS = $_SERVER['PHP_SELF']; $html_txt = <<<EOT ($SS) EOT; echo $html_txt; ------------------------------ これを一時的な変数を使わずに以下のようなコードで実行したいです。 -(2)-------------------------- $html_txt = <<<EOT ($_SERVER['PHP_SELF']) EOT; echo $html_txt; ------------------------------ これを実行すると # Parse error: syntax error, unexpected '"', # expecting T_STRING or T_VARIABLE or T_NUM_STRING in … というエラーが出てしまいます。 最悪、(1)でもいいと思っています。しかし(2)のようなケースでもできてもいいのではないかと思うのですが、エスケープを入れたり「$_SERVER["PHP_SELF"]」などとクォーテーションを変更したりしてもうまく行きません。 質問は以下です ・(2)のような記述はPHPでは不可能なのでしょうか? ・もし可能なら(1)の何が悪いのか、どうすればうまく行くのかを教えてください よろしくお願いします。

    • ベストアンサー
    • PHP
  • 配列のキーに配列を使う場合

    初歩的な事なのかもしれないのですが、 $abc = $a["$b["c"]"]; のように配列のキーに配列を使いたいのですが、上記だとエラーが出ます。 どのように記述すればよいでしょうか?

    • ベストアンサー
    • PHP
  • php5のxpathで結果を連想配列で得るには?

    こんにちは。xpathの結果を連想配列で取得したいのですが、どうすればよいのかわかりません。 ソースは foreach($xml->xpath("/aaa/bbb_id[@id='1']/*") as $key => $value) { $array['$key'] = $value; } という感じで、指定したidの中に存在する子エレメント全て取得しています。 が、$keyは0,1,2...と数字で返ってきてしまいます。 そうではなくて、例えば <aaa> <bbb_id id=1> <hoge>value</hoge> </bbb_id> </aaa> で、"value"を取得したら$keyにはhogeが入ってほしいのですが、どのように書けばいいのでしょうか?

    • ベストアンサー
    • PHP
  • 連想配列と別配列とのマッチング

    以下の連想配列と別にあるテキストファイルを配列にして ”マッチした商品名の全てのデータを表示したいです。 ■連想配列の形↓■ 50を超えるリンゴの種類が、以下のような 連想配列($alldata)の形であります。 $alldata = [1]=> array(5) { ["no"]=> string(1) "1" ["name"]=> string(5) "san-tugaru" ["color"]=> string(3) "red" ["price"]=> string(3) "150" ["memo"]=> string(10) "aomori" } [2]=> array(5) { ["no"]=> string(1) "2" ["name"]=> string(5) "ko-gyoku" ["color"]=> string(3) "red" ["price"]=> string(3) "250" ["memo"]=> string(10) "yamagata" } というふうに50個のリンゴのデータ続きます。 リンゴの配列情報の詳細は以下の通りです。 ※配列のKeyの番号とvalueの商品Noは同じで連想配列にしています。 商品No ["no"] 名称  ["name"] 色   ["color"] 価格  ["price"] 産地  ["memo"] +-------------------------------------------------+ ■テキストファイル(select-ringo.txt)の内容と意味■ このテキストファイルは、商品No「4、5、12、30」の リンゴを選んで表示したい場合です。 +----+ 4,1,10 5,4,13 12,2,9 30,3,15 +----+ ◇カンマで区切られた数字の意味◇ ・各行の先頭の数字は「商品No.」を選択します。 ・カンマで区切られた2番目の数字は、”色”を選択します。 たとえば、1行目であれば、 商品No 4 の全ての情報は カラー1=#ff0000 echo表示されます。 他の番号の場合は色は以下の通りです。 カラー1 =#ff0000 カラー2 =#ff6600 カラー3 =#ff0066 カラー4 =#ff3399 ・3番目の数字はフォントサイズ(px)を意味します。 +---------------------------------------------------+ テキストファイルに”商品番号のみ”を入れると以下のスクリプトで動作しますが、 カンマで区切った場合のマッチング方法に悩んでいます。 ※以前、こちらで親切な方に方法を教えていただきました↓ $selectNo = array_map(rtrim, file("select-ringo.txt")); foreach ($selectNo as $num) { if (is_numeric($num) && array_key_exists($num, $alldata)) { 表示 } } みなさん、お力をお貸しください。 よろしくお願いいたします。

    • ベストアンサー
    • PHP