Swift - 按字母顺序和按值排列字典中的第二个字典

时间:2015-02-13 06:37:30

标签: swift dictionary

我有类型字典: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。它将如何完成?

2 个答案:

答案 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)]