我有大量的數據採用以下形式:[四個整數數組],{與整數數組有關的字符串集}。例如,集合 - 從字典中的字符串數組中提取
[1,1,1,8],{"(1+1+1)*8"}
[1,1,2,8],{"1*(1 + 2)*8","(1 + 2)/(1/8)"}
等
我有成千上萬這些對保存在外部的文本文件,並需要能夠回憶起的關鍵的四個整數的基礎上,各條線。一種解決方案似乎是閱讀文本文件導入在啓動時一本字典,而是因爲字典
let myDict2:Dictionary<Array<Int>, Array <String>> = [[1,1,1,8]: ["(1+1+1)*8"],[1,1,2,8]: ["1*(1 + 2)*8","(1 + 2)/(1/8)"]]
明顯的配方失敗「類型‘數組’不符合協議‘哈希的’。」
但是,我們可以從一個整數數組轉換鍵轉換成字符串,以及與此嘗試:
let myDict2:Dictionary<String, Array <String>> = ["1118": ["(1+1+1)*8"],"1128": ["1*(1 + 2)*8","(1 + 2)/(1/8)"]]
沒有錯誤,它甚至看起來我們可以提取與
let matches2=myDict2["1128"] // correctly returns ["1*(1 + 2)*8", "(1 + 2)/(1/8)"]
結果
但是,當我們試圖從答案拉元素具有與matches2[0]
,我們得到"Cannot subscript a value of type '[String]?'"
在我的鍵盤敲打隨機,我得到了這窩k與matches2![0]
但我不知道爲什麼。
- 有沒有辦法讓我的原始字典嘗試[整數,字符串集]工作?
- 在第二個公式[字符串,字符串集合]中,爲什麼
matches2![0]
工作和matches2[0]
不是? - 字典是一個合理的方法嗎?還是有其他一些數據結構可以更好地實現我的目標?
由於整數數組的限制,我知道如果轉換爲字符串形式沒有不明確的條目。但是,您的Hashable和Equatable的示例實現在將來肯定會派上用場。謝謝。 –