let dict: [String:Int] = ["apple":5, "pear":9, "grape":1]
如何根据Int
值对字典进行排序,以便输出为:
sortedDict = ["pear":9, "apple":5, "grape":1]
let sortedDict = sorted(dict) { $0.1 > $1.1 }
答案 0 :(得分:22)
您需要对字典值进行排序,而不是键。您可以从字典中创建一个元组数组,按其值排序:
Xcode 9•Swift 4 或 Xcode 8•Swift 3
let fruitsDict = ["apple": 5, "pear": 9, "grape": 1]
let fruitsTupleArray = fruitsDict.sorted{ $0.value > $1.value }
fruitsTupleArray // [(.0 "pear", .1 9), (.0 "apple", .1 5), (.0 "grape", .1 1)]
for (fruit,votes) in fruitsTupleArray {
print(fruit,votes)
}
fruitsTupleArray.first?.key // "pear"
fruitsTupleArray.first?.value // 9
使用键对词典进行排序
let fruitsTupleArray = fruitsDict.sorted{ $0.key > $1.key }
fruitsTupleArray // [(key "pear", value 9), (key "grape", value 1), (key "apple", value 5)]
使用键和本地化比较对字典进行排序:
let fruitsTupleArray = fruitsDict.sorted { $0.key.localizedCompare($1.key) == .orderedAscending }
答案 1 :(得分:4)
字典无法排序。通常,当我需要从字典中排序的东西时,我会创建一个单独的字典键数组。
在您的情况下,创建一个键数组,通过比较它们在字典中的值来对它们进行排序。
答案 2 :(得分:0)
可以通过以下实现方式实现
let sortedDictionary = unsortedDictionary.sorted{$0.key > $1.key}
答案 3 :(得分:0)
使用 KeyValuePairs 代替 Dictionary
"字典中键值对的顺序在突变之间是稳定的,但在其他方面是不可预测的。如果您需要键值对的有序集合并且不需要 Dictionary 提供的快速键查找,请参阅 KeyValuePairs键入替代方案。” - Swift Dictionary