Dictionaryにキーだけ追加する方法

やりたいこと
1.あるサイトで検索を行い、検索結果上位2件を取得
2.①で取得した結果を検索文字列として、さらに1件ずつ詳細検索を行う
3.①の検索結果を「Key」に、それに対応する②の検索結果を「Value」に追加

質問
上記を実施し、最終的に
dictionary = {{"検索結果1","value1"},{"検索結果2", "value2"}}
のようにしたいのですが、①の手順で検索結果2件のアイテムをKeyに格納するにはどうすれば良いでしょうか?

こんにちは

dictionary = {{"検索結果2","value1"},{"検索結果2", "value2"}}

これは”検索結果2"というキーが2つあるということでしょうか?
もしそうであればdictionaryの仕様上できません、になります。

それぞれが別であれば、Dictionary型の変数をdictとすると、あらかじめ初期化したうえで

dict("検索結果2-1")="value1"
dict("検索結果2-2")="value2"

とすればよいかと思います。

なおDictionaryにおいてkeyとvalueは対なので片側だけということはできません。

記載ミスです。修正しました。

やはりそうですか。今回はこちらをやりたかったので別の方法で行うようにしてみます。

ありがとうございます。

listを使ってもいいでしょうし、valueがなければ、string.emptyでも代入しておけばいいですね

こちらについて詳しくご教示いただきたいです。
Dictionary型ではなく、Listを使用するということでしょうか?

キーと値で、キーだけを格納していきたいのでしたら、List型だけでOKという意味です。

Dictionary型でも、Valueに適当な値を入れて参照しなければ、それでも十分事足りるように使えますね。

この場合、やりたいことの「3」はできないですかね?

たしかにそうですね!ありがとうございます!

ですね。③はDictionary型が便利ですね。

Dictionary型にキーだけ(ValueはString.Emptyなど)追加して、その後Valueを書き換える事もできますので、そういうのも知識として覚えておいてくださいね。

スルメを同じで、「開発すればするほど、味が出る」と思っています(^^♪

1 Like

こちらさっそく実装してみたのですが、予めstring.emptyを代入しておいてfor each内で正しいvalueを代入しようとしたところ、2件目のitemの繰り返しでエラーになりできませんでした。
エラー内容は以下です。

コレクションが変更されました。列挙操作は実行されない可能性があります。

作成したフローの流れは、

①
dictionary変数(Key) = String.Empty //予めKeyに値を、Valueにemptyを格納。
//2回繰り返すので、実行後はdictionary変数には2つのKeyが格納されます

②
ForEach dictionary変数.Keys
  item で詳細検索 //①で取得したkeyで1件ずつ検索を実施
  dictionary変数(item) = "検索結果" //keyに対する詳細検索結果をvalueに格納

1件目のkeyは最後の代入までできますが、2件目のitemからが上記のエラーとなります。
このエラーが出る原因はわかるのですが、どうしたらエラーを出さずに各Keyのvalueの値を繰り返し書き換えられるでしょうか。。

※追記
やっぱり、一度string.emptyを代入するのをやめ、Keyになる値をList型に格納してから検索を実施することでやりたいことが実行できました。
ありがとうございます。

繰り返しのitemの型にkeyvaluepairsを指定して、各要素にはdicを。

dic(item.keys) = 値

ではどうでしょう…

出先から失礼…

追補:家に戻ってきました。サンプルxamlを添付します<m(__)m>
DIC.xaml (10.2 KB)

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.