- UiPath RPA開發:入門、實戰與進階
- 邵京京等
- 3493字
- 2021-08-06 14:57:36
3.2.8 Dictionary
字典(Dictionary)類型是一種Object類型,用于在程序中存儲鍵值對。Dictionary的鍵值對由Key(鍵)和Value(值)兩個元素組成,其中Key必須是唯一的,而Value不需要唯一,使用時可以通過Dictionary(Key)的形式在Dictionary中獲取到Key對應的Value。
當程序中希望通過唯一標識保存或查詢其對應的信息時,都可用Dictionary類型,例如藥品價格單、圖書館的書籍目錄、各國家首都信息等。
Dictionary類型不在Variables面板的Variable type下拉列表的默認選項中,它可以在Browse and Select a .Net Type對話框中的系統命名空間System.Collections.Generic下找到,如圖3-121所示。Dictionary<TKey,TValue>中的TKey表示Key的數據類型,TValue表示Value的數據類型。

圖3-121 Dictionary類型示例
Dictionary中的Key和Value都可以是任何類型,如String型、Int32型、Double型及其他.Net中的數據類型。
Dictionary本身作為一種Object類型,與之前提到的數據類型不同,需要實例化之后才可以使用。它的構造函數形式為new Dictionary(Of TKey,TValue) From {{Key1,Value1}, {Key2,Value 2}}。Dictionary型變量在Variables面板中的顯示如圖3-122所示。

圖3-122 Dictionary型變量在Variables面板中的顯示
在Studio中,獲取Dictionary中的信息有如下幾種常見方式。
□Dictionary(Key):獲取與指定的Key相關聯的Value值。
□Dictionary.Item(Key):獲取與指定的Key相關聯的Value值,同Dictionary(Key)。
□Dictionary.Keys(Index):獲取指定下標的Key值。
□Dictionary.Values(Index):獲取指定下標的Value值。
□Dictionary.Count:獲取包含在Dictionary<TKey,TValue>中的鍵值對的數目。
□Dictionary.Keys:獲取包含在Dictionary<TKey,TValue>中的Key的集合。
□Dictionary.Values:獲取包含在Dictionary<TKey,TValue>中的Value的集合。
要對Dictionary中的信息進行判斷時,可以使用如下方法。
□Dictionary.ContainsKey(Key):確定Dictionary<TKey,TValue>是否包含指定的Key。
□Dictionary.ContainsValue(Value):確定Dictionary<TKey, TValue>是否包含特定Value。
□Dictionary.Equals(Dictionary):確定指定的Dictionary是否等于當前的Dictionary。
需要更改或追加Dictionary中的鍵值對時,可以使用Assign活動將Value值賦值給Dictionary(Key)。如果指定的Key已經存在,則會將它相關聯的Value修改為新的Value值;如果指定的Key不存在,則會在Dictionary中追加新的Key和Value值。
【例3.13】使用Dictionary變量完成修改、添加和打印各國家首都的流程。創建一個項目,創建Dictionary型變量CapitalInfo,在Dictionary中設置默認值(Key:中國,Value:BeiJing)。將中國的首都信息由英文“BeiJing”更改為中文“北京”,添加日本的首都為東京的信息到Dictionary中,并在Output面板中輸出中國和日本的首都。流程圖如圖3-123所示。
具體實現步驟如下所示。
1)進入Studio界面,點擊Process創建一個新流程,命名為3_13_Dictionary,如圖3-124所示。

圖3-123 流程圖

圖3-124 新建流程
2)拖入一個Sequence活動到設計器面板。在Properties面板中,將Sequence活動的DisplayName屬性更改為“首都管理流程”,如圖3-125所示。
3)在Variables面板中創建Dictionary型變量CapitalInfo,用于存儲個國家首都信息。默認的Variable type下拉列表中不含有Dictionary型,可以選擇Browse for Types...選項,如圖3-126所示。

圖3-125 拖入Sequence活動并更改屬性

圖3-126 創建變量并更改數據類型
4)系統隨即會顯示Browse and Select a.Net Type對話框,在Type Name字段中輸入想要查找的變量類型關鍵字dictionary,如圖3-127所示。在結果中選擇需要的選項Dictionary<TKey,TValue>,此時對話框上方會顯示需要為Dictionary的Key和Value選擇數據類型,在Key和Value對應的下拉列表中都選擇String后點擊OK按鈕,如圖3-128所示。

圖3-127 根據關鍵字查找變量類型

圖3-128 選擇字典類型
5)此時Variables面板中變量CapitalInfo的數據類型被更改為Dictionary型,Key和Value的數據類型都為String型。在Variables面板的Default字段中輸入new Dictionary(Of String,String) From {{"中國","BeiJing"}},為變量CapitalInfo初始化并設置默認值,如圖3-129所示。

圖3-129 變量初始化及設置默認值
6)拖入一個Assign活動到“首都管理流程”活動中。在Properties面板中,將Display-Name屬性更改為“更改首都BeiJing為中文”,在To屬性中輸入CapitalInfo("中國"),在Value屬性中輸入“"北京"”,如圖3-130所示。

圖3-130 更改首都BeiJing為中文
7)再拖入一個Assign活動到“首都管理流程”活動中。在Properties面板中,將DisplayName屬性更改為“添加日本首都信息”,在To屬性中輸入CapitalInfo("日本"),在Value屬性中輸入“"東京"”,如圖3-131所示。

圖3-131 添加日本首都信息
8)拖入一個Write Line活動到“首都管理流程”活動中。在Properties面板中,將DisplayName屬性更改為“輸出中國和日本首都”,將Text屬性更改為“"中國首都:"+CapitalInfo("中國")+"。"+"日本首都:"+CapitalInfo("日本")+"。"”,如圖3-132所示。

圖3-132 輸出中國和日本首都活動設置
9)按F5鍵執行流程,將在Output面板中顯示執行結果,如圖3-133所示。

圖3-133 執行結果
除此之外,還可以使用Dictionary.Add(Key,Value)方法將指定的鍵值對添加到Dictionary中。這種方法需要借助特定的活動來實現,如下所示。
活動1:使用Invoke Method活動添加鍵值對。
UiPath是基于.Net開發的,因此.Net中的程序方法基本都可以在UiPath中使用。
Invoke Method活動是UiPath提供的可以調用目標方法的活動,將目標和需要導入/導出的參數寫在該活動的Properties面板中,即可調用方法的對目標進行操作。
當我們想要通過調用.Net方法的方式來實現需求時,就可以使用Invoke Method活動,具體使用方法如例3.14所示。
【例3.14】使用Invoke Method活動完成添加和打印各國家首都的流程。創建一個項目,創建Dictionary型變量CapitalInfo,添加中國的首都為北京的信息到Dictionary中,并在Output面板輸出中國的首都。流程圖如圖3-134所示。

圖3-134 流程圖
具體實現步驟如下所示。
1)進入Studio界面,點擊Process創建一個新流程,命名為3_14_Dictionary_InvokeMethod,如圖3-135所示。

圖3-135 新建流程
2)參照例3.13中的第2~6步創建項目,完成后如圖3-136所示。

圖3-136 參照例3.13創建項目
3)拖入一個Assign活動到“首都管理流程”活動中。在Properties面板中,將DisplayName屬性更改為“初始化字典”,在To屬性中輸入變量CapitalInfo,在Value屬性中輸入new Dictionary(Of String,String),如圖3-137所示。

圖3-137 初始化字典
4)在Activities面板的搜索框內輸入invoke method,如圖3-138所示。

圖3-138 搜索Invoke Method活動
5)將Invoke Method活動拖入“首都管理流程”活動中。在Properties面板中,將DisplayName屬性更改為“添加中國首都信息”,在MethodName屬性中輸入Add,在TargetObject屬性中輸入變量CapitalInfo,如圖3-139所示。

圖3-139 拖入Invoke Method活動并更改屬性
6)在Properties面板中點擊Parameters右邊的設置按鈕,系統將會彈出Parameters窗口,點擊Create Arguments按鈕創建兩個In方向的String型參數,Value分別為"中國"和"北京",如圖3-140所示。

圖3-140 設置Invoke Method活動的參數
7)拖入一個Write Line活動到“首都管理流程”活動中。在Properties面板中,將DisplayName屬性更改為“輸出中國首都”,將Text屬性更改為“"中國首都:"+CapitalInfo("中國")+"。"”,如圖3-141所示。
8)按F5鍵執行流程,將在Output面板中顯示執行結果,如圖3-142所示。

圖3-141 輸出中國首都活動設置
活動2:使用Invoke Code活動添加鍵值對。
Invoke Code活動是UiPath提供的可以直接調用C#或.Net代碼的活動,將需要執行的代碼和需要導入/導出的參數寫在該活動的Properties面板中,選擇對應的語言類型,即可執行要調用的代碼。

圖3-142 執行結果
當我們想要通過調用代碼的方式來實現需求時,就可以使用Invoke Code活動,具體使用方法如例3.15所示。
【例3.15】使用Invoke Code活動完成例3.14的需求。
具體實現步驟如下所示。
1)進入Studio界面,點擊Process創建一個新流程,命名為3_15_Dictionary_InvokeCode,如圖3-143所示。

圖3-143 新建流程
2)參照例3.13中的第2~6步創建項目,完成后如圖3-144所示。

圖3-144 參照例3.13創建項目
3)拖入一個Assign活動到“首都管理流程”活動中。在Properties面板中,將DisplayName屬性更改為“初始化字典”,在To屬性中輸入變量CapitalInfo,在Value屬性中輸入new Dictionary(Of String,String),如圖3-145所示。

圖3-145 初始化字典
4)在Activities面板的搜索框內輸入invoke code,如圖3-146所示。

圖3-146 搜索Invoke Code活動
5)將Invoke Code活動拖入“首都管理流程”活動中。在Properties面板中,將DisplayName屬性更改為“添加中國首都信息”,在Code屬性中輸入CapitalInfo.Add("中國","北京"),如圖3-147所示。

圖3-147 拖入Invoke Code活動并更改屬性
6)在Properties面板中點擊Arguments右邊的設置按鈕,系統將會彈出Arguments窗口,點擊Create Arguments按鈕創建In方向的參數CapitalInfo,數據類型與之前的變量CapitalInfo一致,將變量CapitalInfo寫入Value字段后點擊OK按鈕,如圖3-148所示。

圖3-148 設置Invoke Code活動的參數
7)拖入一個Write Line活動到“首都管理流程”活動中。在Properties面板中,將DisplayName屬性更改為“輸出中國首都”,將Text屬性更改為“"中國首都:"+CapitalInfo("中國")+"。"”,如圖3-149所示。
8)按F5鍵執行流程,將在Output面板中顯示執行結果,如圖3-150所示。
當我們需要從Dictionary中移除鍵值對時,可以使用Dictionary.Remove(Key,Value)方法來移除指定的鍵值對,也可以使用Dictionary.Clear()方法來移除所有的鍵值對。這兩種方法都需要借助特定的活動來實現,具體方式請參照使用Dictionary.Add(Key,Value)方法添加鍵值對的案例。

圖3-149 輸出中國首都活動設置

圖3-150 執行結果

圖3-151 流程圖
在實際項目中,我們有時會需要對Dictionary進行遍歷,實現方法見例3.16。
【例3.16】完成遍歷Dictionary的流程。創建一個項目,將中國、日本、美國的首都信息存入Dictionary型變量,遍歷Dictionary并在Output面板輸出該Dictionary中所有的首都信息。流程圖如圖3-151所示。
具體實現步驟如下所示。
1)進入Studio界面,點擊Process創建一個新流程,命名為3_16_Dictionary_Traversal,如圖3-152所示。
2)參照例3.13中的第2~6步創建項目,完成后如圖3-153所示。
3)拖入一個Assign活動到“首都管理流程”活動中。在Properties面板中,將DisplayName屬性更改為“在字典中添加各國首都信息”,在To屬性中輸入變量Capital-Info,在Value屬性中輸入New Dictionary(Of String,String) From {{"中國","北京"},{"日本","東京"},{"美國","華盛頓"}},如圖3-154所示。

圖3-152 新建流程

圖3-153 參照例3.13創建項目

圖3-154 在字典中添加各國首都信息
4)在Activities面板的搜索框內輸入for each,如圖3-155所示。

圖3-155 搜索For Each活動
5)將For Each活動拖入“首都管理流程”活動中。在Properties面板中,將DisplayName屬性更改為“遍歷字典”,將TypeArguments屬性更改為String,在Values屬性中輸入變量CapitalInfo.Values,該活動會遍歷CapitalInfo中的所有Value值,如圖3-156所示。

圖3-156 更改For Each活動的屬性
6)拖入一個Write Line活動到“遍歷字典”活動中。在Properties面板中,將DisplayName屬性更改為“輸出首都”,在Text屬性中輸入item,如圖3-157所示。
7)按F5鍵執行流程,將在Output面板中顯示執行結果,如圖3-158所示。

圖3-157 輸出首都活動設置

圖3-158 執行結果
- Vue.js 3.x快速入門
- Web前端開發技術:HTML、CSS、JavaScript(第3版)
- DevOps with Kubernetes
- 無代碼編程:用云表搭建企業數字化管理平臺
- Mastering Concurrency in Go
- EPLAN實戰設計
- Apex Design Patterns
- Ext JS 4 Web Application Development Cookbook
- C語言程序設計
- Learning Apache Cassandra
- C++20高級編程
- 跟戴銘學iOS編程:理順核心知識點
- C++ System Programming Cookbook
- Learning Kotlin by building Android Applications
- Instant GLEW