我有一个字典[String : Double]
,其中包含以下数据:
Museum1 : 8785.8971799638
Museum2 : 34420.9643422388
Museum3 : 826.467789130732
Museum4 : 304120.342151219
我想按双值对字典进行排序。我做了一些研究,但所有的例子都被弃用了当前版本的Swift
我已尝试使用Sort Dictionary by values in Swift中的此代码:
for (k,v) in Array(self.museumsDic).sorted({$0.0 < $1.0}) {
println("\(k):\(v)")
}
但它不起作用。如何按字符串对字典进行排序?
答案 0 :(得分: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)")
}
结果:
Museum3:826.467789130732
Museum1:8785.8971799638
Museum2:34420.9643422388
Museum4:304120.342151219
如果您认为这是错误的,您需要解释原因。
答案 1 :(得分:1)
在Swift 2.2中,这可行
for (k,v) in (Array(d).sort {$0.1 < $1.1}) {
print("\(k):\(v)")
}
Swift 3,它也有效:
for (k,v) in (Array(yourDictionary).sorted {$0.1 < $1.1}) {
print("\(k):\(v)")
}
答案 2 :(得分:0)
Swift 4及更高版本的简单解决方案...
let dict = ["Museum1":8785.8971799638,
"Museum2":34420.9643422388,
"Museum3":826.467789130732,
"Museum4":304120.342151219]
let dictSortByValue = dict.sorted(by: {$0.value < $1.value} )
for item in dictSortByValue {
print("\(item.key) \(item.value) ")
}
// Museum3 826.467789130732
// Museum1 8785.8971799638
// Museum2 34420.9643422388
// Museum4 304120.342151219
显然,您可以在Swift 4中对Dictionary进行排序-无需转换为数组。