2017-07-18 28 views
-1

有巨大對象看起來像:獲取從一個巨大的鍵 - 值對的列表中的鍵

{ 
    "exercise": ["running","walking","gym" ........lots of words], 
    "eat": ["breakfast","dinner",....... lots of words..], 
    . 
    . 
    . 
    "lots of keys": [ .... ....] 
} 

有大量分類爲如上所示的數據。在遇到像gym這樣的詞時,我需要在上例中找到它的類別exercise。雙循環的強力方法很難解決問題,因爲數據量很大。

這裏可以應用什麼算法?數據結構能夠有效地解決這個問題?

每個列表中的鍵和項目的數量會逐漸增加,但它會輕鬆超過一百萬個鍵和包含項目的列表。

PS:我對目前的結構轉換成一些相關的數據結構完全沒問題,然後應用所需的方法

+0

定義「大」。也許你應該使用數據庫。 – str

+0

@str單詞列表可能超過百萬 –

+0

您可以節省CPU時間,但會花費內存......就像在加載時將對象反轉爲地圖一樣。 –

回答

0

您應該使用一個數據庫,並添加適當的索引。但是,如果您確實想要堅持使用此對象,則可以使用oboe.js來避免在搜索之前解析整個文檔。它在XML世界中的作用類似於SAX。

參見「吊起來時,我們有什麼,我們需要」例如在http://oboejs.com/examples

0

如果你可以將文件格式更改爲JSON其他的東西,也許你可以把每個類別上一個新行就像一個CSV文件(無標頭),其中在一條線上的第一個值是類別關鍵

例如:

exercise,running,walking,gym........ 
eat,breakfast,dinner,....... 

現在,以找到包含關鍵字的類別:

  1. 搜索整個文件(像grep的),找到匹配
  2. ,該行 查找每個匹配行的第一個值來獲得類別關鍵