我试图对一个数组进行排序并将其分配给另一个数组。两个数组的定义相同:
var arrayA: [String: [Int]] = [:]
var sortedArrayA:[String: [Int]] = [:]
sortedArrayA = arrayA.sort{ $0.0 < $1.0 } // error on this line.
我遇到了这个错误:
不能将类型[(String,[Int])]的值赋给[String:[Int]]
类型
我想要达到的目的是制作这本词典:
["c" : [1,2,3], "a" : [2,3,3], "b" : [4,4,4]]
这样排序:
["a" : [2,3,3], "b" : [4,4,4], "c" : [1,2,3]]
如果它出现了。
答案 0 :(得分:1)
是的,我知道 Swift中的闭包很酷。但它们不够酷,无法推断出你想要从这段代码中对数组进行排序:
var arrayA: [Int] = []
var sortedArrayA:[Int] = []
sortedArrayA = arrayA{ $0 < $1 }
你的代码更糟糕!你甚至没有声明数组!您声明的是假定未被排序的字典!
无论如何,只要学习数组的语法:它是一对围绕你想要的数组类型的方括号。因此,Int
的数组将为[Int]
,String
的数组将为[String]
。
知道了吗?凉。
“但我只有字典,但是......”你伤心地说。如果您只有字典,则可以对其keys
或values
进行排序。我想你可能需要对值进行排序。
let values = someDictionary.values // if you want to sort keys, use .keys instead
现在您需要实际调用 sort
方法才能进行排序。只是写一个闭包是而不是才能起作用。
let sortedValues = values.sort(<)
当然,您可以使用任何阵列执行此操作!
let array = [3, 2, 1]
let sortedArray = array.sort(<)
答案 1 :(得分:0)
尝试找出grp.Key.Name
中的数组排序,在swift中你可以使用Playground
对数组进行排序。例如,对于整数数组:
.sort()
答案 2 :(得分:0)
在你的问题中你说你使用数组但实际上你正在使用字典。你的语法是错误的。你可以像这样声明空字典:var dictionary: [String:Int] = ()
。但要回答你真正的问题,你可以这样做:
let arrayA = ["c" : [1,2,3], "a" : [2,3,3], "b" : [4,4,4]]
let sortedDict = arrayA.sort { $0.0 < $1.0 }
print("\(sortedDict)")