我有类型字典:Dictionary<String,Dictionary<String,Int64>>
myDict["DictA"]!["ElementB"] = 8
myDict["DictA"]!["ElementC"] = 16
myDict["DictA"]!["ElementA"] = 32
我想按字母顺序排列第二本字典:
myDict["DictA"]!["ElementA"] = 32
myDict["DictA"]!["ElementB"] = 8
myDict["DictA"]!["ElementC"] = 16
按价值:
myDict["DictA"]!["ElementA"] = 32
myDict["DictA"]!["ElementC"] = 16
myDict["DictA"]!["ElementB"] = 8
我需要arrangeAlphabetically(myDict:Dictionary<String, Int64>)->Dictionary<String, Int64>
类型的func和另一个arrangeByValue
的func。它将如何完成?
答案 0 :(得分:1)
字典本质上是无序的所以用几句话:你不能。
您可以按照数组排序所需的顺序将值放在数组中。
答案 1 :(得分:0)
Dictionary
本质上是一种无序的集合类型。同时,它是(Key, Value)
对元组的序列。您可以获得sorted()
这些元组。
var myDict:[String:[String:Int64]] = ["DictA":[:]]
myDict["DictA"]!["ElementA"] = 32
myDict["DictA"]!["ElementC"] = 16
myDict["DictA"]!["ElementB"] = 8
let sortedByKeyAsc = sorted(myDict["DictA"]!) { $0.0 < $1.0 } // by keys ascending
let sortedByValDesc = sorted(myDict["DictA"]!) { $0.1 > $1.1 } // by values descending
println(sortedByKeyAsc) // -> [(ElementA, 32), (ElementB, 8), (ElementC, 16)]
println(sortedByValDesc) // -> [(ElementA, 32), (ElementC, 16), (ElementB, 8)]