将字典数组转换为集合Swift 4

时间:2018-06-20 14:01:18

标签: swift dictionary set swift4

我有一个字典([[Double:Double]])数组,我想将其转换成Set个字典。我的目标是使用.symmetricDifference查找两个数组之间的差异(两者均为[[Double:Double]]类型)。我该怎么办?

我在hackingwithswift.com上发现了this,并尝试使用它,但出现此错误:

  

类型'[[[Double:Double]]''不符合协议'Hashable'

我也尝试过此代码...

let array1:[[Double:Double]] = [[4.5:3.678], [6.7:9.2867], [7.3: 8.7564]]
let array2:[[Double:Double]] = [[4.5:3.678], [6.7:9.2867]]

let array3 = Set<[[Double:Double]]>(array1).symmetricDifference(Set(array2)) //On this line I get the error above. 

1 个答案:

答案 0 :(得分:1)

您不想要一组[[Double:Double]]。您需要一个[Double:Double]的集合,因为它们是数组中对象,而您希望它们成为集合中对象。

因此,只要您简单地说一遍,就会发生正确的事情

let array1:[[Double:Double]] = [[4.5:3.678], [6.7:9.2867], [7.3: 8.7564]]
let set1 = Set(array1)

以此类推。

可能要求您更新到较新版本的Swift。它可以在Swift 4.2中使用。