小编典典

在Swift中对字典排序

swift

我知道这个话题已经讨论过了,但是我无法解决寻找其他答案的问题,因此,对不起我了!

我需要按键对字典进行排序

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 字典。

最好的解决方案是什么?如何使其运作?


阅读 841

收藏
2020-07-07

共1个答案

小编典典

sorted上面函数的输出是 Array 。因此,您无法像 字典 那样获得键和值。但是您可以使用map函数来检索那些排序的键和值

返回一个包含source 排序元素的Array
。排序算法不稳定(可以更改isOrderedBefore不能为其建立顺序的元素的相对顺序)。

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)
2020-07-07