UiPath Dictionaryコレクションの機能と使い方
Dictionaryはコレクションの一種で
任意のデータ型のキーで要素を管理します。
この記事では、その機能と使い方を紹介します。
(要素の追加、アクセス、削除、全削除、有無確認)
機能と使い方
※赤字は任意の変数名などの可変の箇所です。
言語にVBを選んでいます。
![空のプロセス](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/02/image-122.png)
Dictionaryの構造
Dictionaryは配列やListコレクションと同様、
変数の集まりを管理する変数ですが、
管理の方法が異なります。
配列やListはインデックスという
0から始まる連番の整数で要素を管理しますが、
Dictionaryではキーという任意のデータで管理します。
(多くの場合、連番でない整数か文字列)
配列やListの構造例
インデックス (0から始まる連番の整数) | 要素 |
---|---|
0 | 5320 |
1 | 13724 |
2 | 8823 |
Dictionaryの構造例
キー (任意。例では文字列) | 要素 |
---|---|
北海道 | 5320 |
東京 | 13724 |
大阪 | 8823 |
このようにコードや名称といった連番ではないキーで
データの集まりを可能にするのがDictionaryです。
(ハッシュや連想配列と呼ぶ場合もあります)
変数の宣言
Dictionaryは初期状態では変数の型に存在しないため、
型の参照が検索する必要があります。
System.Collections.Generic.Dictionaryで検索します。
そしてキー(左)と値(右)のデータ型を指定します。
今回はStringをキー、Int32を値のデータ型に設定します。
![型の参照でSystem.Collections.Generic.Dictionaryを検索](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/02/image-159.png)
そして既定値に下記のように指定します。
new Dictionary(of キーのデータ型,値のデータ型)
今回の例ではこのように指定します。
new Dictionary(of String,Int32)
これで変数の準備が完了です。
![Dictionary型変数の作成結果](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/02/image-160.png)
要素を追加
方法が3つあります。
代入を使用(推奨)
最も簡単でおススメの方法が代入を使用することです。
利用する場合、プロパティはこのように指定します。
右辺値(Value) | 値 |
左辺値(To) | Dictionary変数(キー) |
![要素追加。代入のプロパティ設定例](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/02/image-161.png)
これにより北海道がキーで5320が値の要素が追加されます。
追加済みの要素に行うと値の更新も可能です。
メソッドを呼び出しを使用
メソッドを呼び出しを使用して、メソッド名にAdd、
ターゲットオブジェクトにDictionary変数を指定します。
プロパティ | 設定値 |
---|---|
メソッド名 | Add |
ターゲットオブジェクト | Dictionary変数 |
パラメータ | キーと値(後述) |
![要素追加。メソッドを呼び出しのプロパティ設定例。](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/02/image-162.png)
そしてパラメータにキーと値の順番で格納します。
![要素追加。メソッドを呼び出しのパラメータプロパティ設定例。](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/02/image-163.png)
これにより要素が追加されます。
コレクションに追加を使用
UiPathにはコレクションに追加があるため
それを使いたくなりますがDictionaryと
相性が悪いのでおススメしません。
利用する場合、下記のようにプロパティを設定します。
プロパティ | 設定値 |
---|---|
TypeArgument | KeyValuePair(後述) |
コレクション | Dictionary変数 |
項目 | 追加する要素。KeyValuePair型(後述) |
まずTypeArgumentにKeyValuePairを指定する必要がありますが、
型の検索を行う必要があります。
System.Collections.Generic.KeyValuePairで検索し、
キーと値のデータ型を指定します。
![型の参照でSystem.Collections.Generic.KeyValuePairを検索](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/02/image-165.png)
そしてコレクションに変数を指定し、項目に下のように指定します。
new KeyValuePair(of キーのデータ型,値のデータ型)(キー,値)
![要素追加。コレクションに追加のプロパティ設定例。](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/02/image-164.png)
要素へのアクセス
一つの要素
先ほどの追加を全て実行すると
Dictionary変数に下のように追加されます。
キー(任意。例では文字列) | 要素 |
---|---|
北海道 | 5320 |
東京 | 13724 |
大阪 | 8823 |
各要素にアクセスするには下のように記述します。
Dictionary変数(キー)
![一つの要素のアクセスする例(メッセージダイアログ)](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/02/image-166.png)
![一つの要素の表示結果](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/02/image-167.png)
代入アクティビティの左辺値(To)に指定して
内容を更新することも可能です。
全ての要素
全要素にアクセスすることも可能です。
TypeArgumentはSystem.Collections.Generic.KeyValuePairのため
最初は検索する必要があります。
![全ての要素のアクセスする例(繰り返し)](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/02/image-168.png)
item.Keyでキー、item.Valueで値にアクセスできます。
![全ての要素のアクセスする例(1行に書き込み)](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/02/image-169.png)
1行に書き込みで表示した結果です。
![](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/02/image-170.png)
要素を削除
メソッドを呼び出し(推奨)
Dictionaryはメソッドを呼び出しで行う方が
都合の良いケースが多いでしょう。
利用する場合、アクティビティにはプロパティをこのように設定します。
プロパティ | 設定値 |
---|---|
ターゲットオブジェクト | Dictionary変数 |
メソッド名 | Remove |
パラメーター | 削除するキー(後述) |
まずターゲットオブジェクトにDictionary変数を指定し、
メソッド名にRemoveを指定します。
![要素削除。メソッドを呼び出しのプロパティ設定例。](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/02/image-171.png)
そしてパラメーターに削除するキーを指定します。
![要素削除。メソッドを呼び出しのパラメータプロパティ設定例。](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/02/image-172.png)
コレクションから削除
コレクションから削除でも削除そのものは可能ですが、
キーと値を両方指定し、両方と一致するものを削除するため
キー指定のみで削除可能な前述の方法を多用するでしょう。
利用する場合、アクティビティにはプロパティをこのように設定します。
プロパティ | 設定値 |
---|---|
TypeArgument | KeyValuePair(後述) |
コレクション | Dictionary変数 |
項目 | 追加する要素。KeyValuePair型(後述) |
コレクションから削除で行う場合、
TypeArgumentはSystem.Collections.Generic.KeyValuePairのため
最初は検索する必要があります。
そしてコレクションにDictionary変数を指定して
項目に下記のように指定します。(追加の時と同じ構文です)
new KeyValuePair(of キーのデータ型,値のデータ型)(キー,値)
![要素追加。コレクションから削除のプロパティ設定例。](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/02/image-173.png)
これによりキーと値の両方に一致する要素がある場合、削除が行われます。
要素の有無確認
メソッドを呼び出し(推奨)
KeyかValueかを選んで確認できるため
メソッドを呼び出しの方が多用するでしょう。
利用する場合、アクティビティにはプロパティをこのように設定します。
プロパティ | 設定値 |
---|---|
ターゲットオブジェクト | Dictionary変数 |
メソッド名 | キーを確認する場合:ContainsKey 値を確認する場合:ContainsValue |
パラメーター | 確認するキーまたは値(後述) |
結果 | Boolean変数 |
まずターゲットオブジェクトにDictionary変数を指定し、
メソッド名には、キーの有無を確認する場合はContainsKey、
値の有無を確認する場合はContainsValueを指定します。
![要素の有無確認。メソッドを呼び出しのプロパティ設定例。](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/02/image-174.png)
そしてパラメーターに有無を確認するキー、または値を設定します。
![要素の有無確認。メソッドを呼び出しのパラメータープロパティ設定例。](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/02/image-172.png)
このアクティビティを実行すると指定した要素が存在する場合は
結果に指定したBoolean型変数にTrueが、
存在しない場合はFalseが格納されます。
コレクションの有無を確認
コレクションの有無を確認でも確認そのものは可能ですが、
キーと値を両方指定し、両方と一致するものがあるかを判定するため
キー指定または値指定のみで確認可能な
前述の方法を多用するでしょう。
利用する場合、アクティビティにはプロパティをこのように設定します。
プロパティ | 設定値 |
---|---|
TypeArgument | KeyValuePair(後述) |
コレクション | Dictionary変数 |
項目 | 確認する要素。KeyValuePair型(後述) |
結果 | Boolean変数 |
コレクションの有無を確認で行う場合、
TypeArgumentはSystem.Collections.Generic.KeyValuePairのため
最初は検索する必要があります。
そしてコレクションにDictionary変数を指定して
項目に下記のように指定します。(追加の時と同じ構文です)
new KeyValuePair(of キーのデータ型,値のデータ型)(キー,値)
![要素の有無確認。コレクションの有無を確認のプロパティ設定例。](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/02/image-173.png)
このアクティビティを実行すると
これによりキーと値の両方に一致する要素がある場合、
結果に指定したBoolean型変数にTrueが、
存在しない場合はFalseが格納されます。
要素の全削除
コレクションの消去(推奨)
コレクションを消去を使うと少ない手間で
全削除可能なためこちらを推奨します。
![要素の全削除。コレクションの消去のプロパティ設定例。](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/02/image-175.png)
アクティビティにはプロパティをこのように設定します。
プロパティ | 設定値 |
---|---|
TypeArgument | KeyValuePair(後述) |
コレクション | Dictionary変数 |
TypeArgumentはSystem.Collections.Generic.KeyValuePairのため
最初は検索する必要があります。
そしてコレクションにDictionary変数を指定します。
このアクティビティを実行すると
Dictionary変数の全要素が削除されます。
メソッドを呼び出し
メソッドを呼び出しを使っても一括で全削除が可能です。
前述のコレクションを消去の方が手間が少ないので
そちらを推奨しますが、他のコレクション操作で
メソッドを呼び出しを多用している場合は
利用アクティビティを統一したほうがスッキリする場合があるので
そういったケースであればこちらを推奨します。
利用する場合、アクティビティにはプロパティをこのように設定します。
プロパティ | 設定値 |
---|---|
ターゲットオブジェクト | Dictionary変数 |
メソッド名 | Clear |
このアクティビティを実行すると
Dictionary変数の全要素が削除されます。
![要素の全削除。メソッドを呼び出しのプロパティ設定例。](https://blog-tips.sekenkodqx.jp/wp-content/uploads/2020/02/image-178.png)