arrays - 根据数组中的值按键对字典进行排序

标签 arrays sorting swift dictionary

如何按照数组中列出的顺序按键对字典进行排序?参见示例:

要排序的字典:

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/

相关文章:

c - 我不明白这个程序是做什么的,它是一个递归程序

PHP 通过另一个数组中的特定键对数组进行排序

javascript - 通过 URL 传递字符串数组值的最佳方法

javascript - 递归合并排序函数错误: Cannot read property 'length' of undefined

avfoundation - 从 UnsafePointer<UnsafePointer<CFloat>> 到 Swift 中的 float 组?

JavaScript - 搜索数组中的第一个字符

c++ - C++实现合并排序的运行时错误

php - 如何根据唯一且预定的顺序而不是 asc 或 desc 对 mysql 数据库中的数据进行排序

ios - 快速音量 slider

swift - 减慢按钮动画速度