如何按照数组中列出的顺序按键对字典进行排序?参见示例:
要排序的字典:
var item = [
"itemName":"radio",
"description":"battery operated",
"qtyInStock":"12",
"countOfChildren":"5",
"isSerialized":"0"
]
键的排序顺序:
let sortOrder = [
"itemName",
"qtyInStock",
"countOfChildred",
"description",
"isSerialized"
]
我在 Playground 中尝试了以下操作:
var sortedItem = Dictionary<String, String>()
for i in sortOrder {
sortedItem[i] = item[i]
}
虽然在 Playground 中查看值历史记录以正确的顺序显示所有内容,但生成的字典的顺序看似随机。
最佳答案
正如 Tiago 所提到的,根据定义,Dictionary
没有顺序。它本质上是键到值的映射。我会推荐两种方法中的一种。
如果您希望实现的排序是手动的,就像您的问题看起来那样。我会创建一个数组来保存有序的键。然后,在您需要的任何时候,您可以循环遍历数组(这是有序的)并打印出字典中找到的所有值。它们自然会使用有序的键数组打印出来。
如果排序不是以编程方式完成的,您可以通过执行 myDictionary.keys.array
获取对所有键的引用。然后您可以对数组进行排序,然后再次遍历数组并从字典中获取值。
例子:
let myKeys = myDictionary.keys.array
// sort the keys
for key in myKeys {
println(myDictionary[key])
}
希望对您有所帮助。
关于arrays - 根据数组中的值按键对字典进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29199287/