![](/img/trans.png)
[英]How do i compare two dictionaries in swift and then append any similarities to a new dictionary?
[英]Compare an array of dictionaries with it self for similarities
我使用核心數據來存儲 JSON 文件。 核心數據是字典數組 [TestMO],其中一個字典是關鍵字數組(不是標准計數 - 可能是 3、5、7 等)。 所以我想要做的是將整個數據庫與其自身進行比較,以找到具有相似(或> 50%)匹配關鍵字的對象TestMO。 我在一個循環中嘗試了一個循環,但是太耗時並且用戶體驗很糟糕。 有什么想法可以有效地實現這一目標嗎? 謝謝你。
如果您的數組有n 個元素,並且您想將每個元素與其他每個元素進行比較,那么您最終會進行n*(n-1)/2 次比較。 對於n=10 ,你得到 45 個比較,對於n=100 ,你得到 4950,對於n=1000半百萬,對於n=1000000半萬億。 您的復雜性隨O(n 2 )呈二次方增長。
您將需要在您的陣列上使用您的統計知識以及如何使用您的分析來克服這種復雜性。 例如,如果您的n相對較小並且您只需要運行一次分析,請不要費心優化,讓它運行一個晚上。
如果您想在每次用戶添加另一個元素時運行分析,您可能只想將這個新元素與所有其他n 個元素進行比較,復雜度僅為O(n) 。
為了進一步優化,您可能需要建立一個索引,例如將一組元素與每個關鍵字相關聯的字典。 如果每個關鍵字在現有元素上平均出現m次,則建立索引仍將是耗時和內存密集型的,大約為O(n*m) 。 根據您要分析的內容,將新元素與k個關鍵字進行比較,您可能能夠獲得O(m*k)順序的復雜性以添加該新元素。 如果m和k遠小於n ,則可能會顯着減少您的等待時間。
這個問題與swift
或core-data
無關,但尤其與 計算復雜度和time-complexity
有關。 請將后一個標簽添加到您的問題中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.