我知道这个话题已经讨论过了,但是我无法解决寻找其他答案的问题,因此,对不起我了!
我需要按键对字典进行排序
codeValueDict = ["us": "$", "it": "€", "fr": "€"]
所以我需要这样的字典
sortedDict = ["fr": "€", "it": "€", "us": "$"]
但是我做不到
我试过了
let sortedKeysAndValues = sorted(dictionary) { $0.0 < $1.0 }
但是在我需要从该字典创建两个数组(键和值)之后,并使用该解决方案
codesArray = sortedKeysAndValues.keys.array
给我错误 ’[((String,String)]]’没有名为’keys’的成员, 因为该解决方案未完全返回字典。
所以我尝试了另一种解决方案:
let prova = codiceNomeDict as NSDictionary for (k,v) in (Array(codiceNomeDict).sorted {$0.1 < $1.1}) { let value = "[\"\(k)\": \"\(v)\"]" println(value) }
哪个效果很好,但是我不知道如何创建一个新的 value 字典。
最好的解决方案是什么?如何使其运作?
sorted上面函数的输出是 Array 。因此,您无法像 字典 那样获得键和值。但是您可以使用map函数来检索那些排序的键和值
sorted
map
返回一个包含source 排序元素的Array 。排序算法不稳定(可以更改isOrderedBefore不能为其建立顺序的元素的相对顺序)。
source
let codeValueDict = ["us": "$", "it": "€", "fr": "€"] let sortedArray = sorted(codeValueDict, {$0.0 < $1.0}) print(sortedArray) let keys = sortedArray.map {return $0.0 } print(keys) let values = sortedArray.map {return $0.1 } print(values)