簡體   English   中英

表示樹狀數據的簡單方法?

[英]Simplistic way to represent tree-like data?

我有一些 JSON 數據,我想將其與特定的 ID 數組匹配。 因此,例如,JSON temperature: 80, weather: tornado可以 map 到 ID 數組[15, 1, 82] 這個 ID 數組是完全任意的,我將為特定輸入定義自己的內容,它只是為了根據條件提供建議。

因此,雖然tornado條件下的temperature >= 80 始終映射到[15, 1, 82] ,但cloudy條件下的相同溫度可能是[1, 16, 28] ,依此類推。

問題是有很多潛在的“分支”。 我的程序有 7 個一天中的時間,每個time of day節點都有 7 個潛在的溫度范圍,每個temperature range節點都有 15 個可能的天氣事件。 因此,手動編寫 735 種組合的if語句(如果我計算正確的話)會非常不守規矩。

在此處輸入圖像描述

出於演示目的,我在上面繪制了代表一條路徑的“決策樹”。

除了大量嵌套的條件/案例語句之外,還有哪些推薦的方法可以在代碼中表示這一點?

謝謝。

不需要大量分支。 創建一個包含 735 個可能條目的查找表非常容易。 你說你會自己添加這些值。

為一天中的每個時間、溫度范圍和天氣事件創建枚舉。 因此,一天中的時間從 0 映射到 6,溫度范圍從 0 映射到 6,天氣事件從 0 映射到 14。您基本上有一個 3 維數組。 數組中的每個條目都是一個 ID 列表列表。

在 C# 中,它看起來像這樣:

List<List<int>>[][][] = LookupTable[7][7][15];

要填充查找表,請編寫一個生成 JSON 的程序,您可以將其包含在您的程序中。 在偽代碼中:

for (i = 0 to 6) {       // loop for time of day
  for (i = 0 to 6) {     // loop for temperature ranges
    for (i = 0 to 14) {  // loop for weather events
      // here, output JSON for the record
      // You'll probably want a comment with each record
      // to say which combination it's for.
      // The JSON here is basically just the list of
      // ID lists that you want to assign.
    }
  }
}

也許您想使用該程序生成 JSON 骨架(即每個 [time-of-day, temperature, weather-event] 組合一條記錄),然后手動添加 ID 列表列表。

這是一些准備工作,但最后您的查找非常簡單:將一天中的時間、溫度和天氣事件轉換為其對應的 integer 值,並在數組中查找。 只需幾行代碼。

您可以使用 map 或字典做類似的事情。 您將生成 JSON 如上所述,但不是將其加載到三維數組中,而是將其加載到您的字典中,鍵是三個維度的串聯。 例如,一個鍵是:

"early morning,lukewarm,squall"

可能還有其他查找表解決方案。 這是我想到的前兩個。 關鍵是您擁有大量非常適合索引查找的 static 數據。 利用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM