基于数组中的值按键排序字典

时间:2015-03-22 20:10:39

标签: 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中查看值历史记录时,按正确顺序显示所有内容,生成的字典看起来是随机的。

2 个答案:

答案 0 :(得分:1)

根据定义,字典没有订单。

但是,您可以拥有array of sorted items by touplesimplement your sorted dictionary

答案 1 :(得分:1)

如Tiago所述,根据定义,Dictionary没有订单。它本质上是键到值的映射。我会推荐两种方法中的一种。

如果你想要达到的顺序是手动的,那么你的问题就好了。我会创建一个数组来保存有序键。然后,在您需要的任何时候,您可以遍历数组(这是顺序)并打印出字典中找到的所有值。它们将使用有序的键阵列固有地打印出来。

如果排序不是以编程方式完成的,那么您可以通过myDictionary.keys.array获取对所有键的引用。然后,您可以对数组进行排序,然后再次遍历数组并从字典中获取值。

示例:

let myKeys = myDictionary.keys.array
// sort the keys
for key in myKeys {
    println(myDictionary[key])
}

希望有所帮助。