字典代表與另外一組資料 (稱為鍵) 相關的資料集合。字典可讓您搜尋資料、刪除資料,以及將資料插入集合。
基本上,我們可以將字典想成是一種查詢內容相當聰明的方法。
雖然字典功能在 Dynamo 中已經存在好一段時間,但是 Dynamo 2.0 引入了新的方式來管理此資料類型。
原始影像由 提供
Dynamo 2.0 不只為字典引入先前討論的節點,Code Block 中也同樣有針對字典的新功能!
您可以使用類似於下方的語法,或節點的 DesignScript 式表現法。
由於字典在 Dynamo 中是一種物件類型,因此我們可以對其執行以下動作。
!
維持這類互動在將 Revit 資料與字串建立關係時會特別有用。接著,我們來看看一些 Revit 使用情況。
您是否曾想要依據 Revit 包含的資料片段查看其中的一些內容?
如果您完成了類似下列作業,就可能達到這個目的。
在下面的影像中,我們收集 Revit 模型中的所有房間、取得所需房間的索引 (依房間號碼),最後取得索引處的房間。
!
收集模型中所有的房間。
要尋找的房間號碼。
得到房間號碼,並尋找其所在的索引。
得到索引處的房間。
按一下下方的連結下載範例檔案。
附錄中提供完整的範例檔案清單。
現在讓我們使用字典重新創造這個構想。首先我們必須收集 Revit 模型中所有的房間。
!
我們選擇我們想要使用的 Revit 品類 (在本案例中,我們使用房間)。
我們告訴 Dynamo 收集所有這些元素
接著,我們必須決定要使用哪些鍵來查詢此資料。(在一節可以找到鍵的相關資訊)。
!
我們要使用的資料是房間號碼。
現在,我們要使用給定的鍵和元素建立字典。
!
Dictionary.ByKeysValues 節點會在給定適當輸入的狀況下建立字典。
Keys必須是字串,而values可以是各種物件類型。
最後,我們現在可以從字典中使用房間號碼擷取房間。
!
String是我們要用來從字典中查詢物件的鍵。Dictionary.ValueAtKey 現在會從字典中取得物件。
使用同樣的字典邏輯,我們也可以使用群組的物件建立字典。如果我們想要查詢給定樓層的所有房間,可以修改上面的圖表,如下所示。
!
我們現在不使用房間號碼做為鍵,而是使用參數值 (在此案例中,我們將使用樓層)。
!
現在,我們可以依據房間所在的樓層將房間分組。
!
有了依樓層分組的元素,我們現在可以使用共用鍵 (唯一鍵) 做為字典的鍵,使用房間的清單做為元素。
!
最後,使用 Revit 模型中的樓層,我們可以在字典中查詢哪些房間位於該樓層。
Dictionary.ValueAtKey會採用樓層名稱,然後傳回該樓層的房間物件。
使用字典的時機非常多。將 Revit 中的 BIM 資料與元素本身建立關係,就可以產生各種使用情況。
Dictionary.ByKeysValues 將使用提供的值和鍵建立字典。(項目數目會是最短的清單輸入)Dictionary.Components 將產生輸入字典的元件。(這是建立節點的反轉過程)。
Dictionary.RemoveKeys 將產生新的字典物件但移除輸入鍵。
Dictionary.SetValueAtKeys 將根據輸入鍵與值產生新字典,以取代對應鍵處的目前值。
Dictionary.ValueAtKey 會傳回輸入鍵處的值。
Dictionary.Count 會告訴您字典中有多少個鍵值對。
Dictionary.Keys 會傳回字典中目前儲存哪些鍵。
Dictionary.Values 會傳回字典中目前儲存哪些值。
字典的整體相關資料是處理索引和清單的舊方法的重要替代方法。
Dynamo 2.0 引入將字典資料類型與清單資料類型分開的概念。此變更可能會對您如何在工作流程中建立和使用資料造成一些重大變更。在 2.0 版之前,字典和清單合併成一種資料類型。簡單來說,清單實際上是有整數鍵的字典。
字典是一種由鍵 - 值對的集合所組成的資料類型,其中每個鍵在每個集合中都是唯一的。字典沒有順序,基本上您可以使用鍵值而不是清單中的索引值「查詢」內容。在 Dynamo 2.0 中,鍵只能是字串。
清單是一種由有序值的集合所組成的資料類型。在 Dynamo 中,清單使用整數做為索引值。
將字典與清單分開,是為了讓字典成為頭等物件,您可以使用它們快速輕鬆地儲存和查詢值,無需記住索引值或在整個工作流程中維護嚴格的清單結構。在使用者測試期間,我們看到當使用字典而不是數個 GetItemAtIndex 節點時,很明顯縮小了圖表大小。
_語法_發生了變化,改變您在 Code Block 中初始化和使用字典與清單的方式。
字典使用以下語法 {key:value}
清單使用以下語法 [value,value,value]
!
在電腦科學中,字典 (像是清單) 是物件的集合。清單有特定的順序,而字典則是 沒有順序 的集合。字典不依賴有順序的數字 (索引),而是使用 鍵。
在下面的影像中,我們示範字典的可能使用案例。字典通常是用來讓兩組可能沒有直接關聯的資料建立關係。在我們的範例中,我們要將西班牙版本的某個字連接到英文版本,以供稍後進行查詢。
!
建置字典以關聯兩個資料。
取得具有給定索引的值。
資源庫引入了 新節點,以協助您建立、修改和查詢字典。
在 1.x 版的 Code Block 中建立的清單,在載入腳本時會自動移轉成使用方括號 [ ] 而不是大括號 { } 的新清單語法 \