Swift按字典排序字典

use*_*690 2 dictionary swift

我有一本字典,[String : Double]包含以下数据:

Museum1 : 8785.8971799638
Museum2 : 34420.9643422388
Museum3 : 826.467789130732
Museum4 : 304120.342151219
Run Code Online (Sandbox Code Playgroud)

我想用double值对字典进行排序.我做了一些研究,但是对于当前版本的Swift,所有示例都已弃用

我尝试使用Swift中的值Sort Dictionary中使用此代码:

for (k,v) in Array(self.museumsDic).sorted({$0.0 < $1.0}) {
    println("\(k):\(v)")
}
Run Code Online (Sandbox Code Playgroud)

但它不起作用.如何按字符串对字典进行排序?

mat*_*att 11

目前尚不清楚您的期望是什么.实际上没有排序字典这样的东西.除了错位的括号外,您的代码基本上是正确的.我试过这个:

let d = ["Museum1":8785.8971799638,
"Museum2":34420.9643422388,
"Museum3":826.467789130732,
"Museum4":304120.342151219]

for (k,v) in (Array(d).sorted {$0.1 < $1.1}) {
    println("\(k):\(v)")
}
Run Code Online (Sandbox Code Playgroud)

结果:

Museum3:826.467789130732
Museum1:8785.8971799638
Museum2:34420.9643422388
Museum4:304120.342151219
Run Code Online (Sandbox Code Playgroud)

如果你认为这是错的,你需要解释原因.

  • 我觉得有必要解释这段代码,因为它很难破译.数组(d)从字典中创建一个数组.数组的每个元素都是一个元组,由字典中的键值对组成.符号$ 0.1允许在元组内引用.它实质上是指根据第二项(即值)对元组进行排序.排序的结果仍然是一个元组数组,然后可以通过'for(k,v)'迭代. (3认同)