我有大量的数据采用以下形式:[四个整数数组],{与整数数组有关的字符串集}。例如,集合 - 从字典中的字符串数组中提取
[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的示例实现在将来肯定会派上用场。谢谢。 –