斯威夫特:排序字典

Ben

我正在学习快速,并试图理解字典。我已经习惯了PHP,您可能会在其中编写以下内容...

$dataPoints = Array("A"=>1,"B"=>2,"C"=>3);
foreach($dataPoints as $value) {
    echo($value);
}

在此示例中,将按以下顺序输出值:1、2、3

我的快速代码看起来像这样...

var dataPoints: Dictionary<String,Int> = ["A":1,"B":2,"C":3]
for (key, value) in dataPoints {
        print(value)
}

但是,值以意外的顺序出现。我可以做些干净的事情来保持值的创建顺序,还是不能对快速字典进行排序?

阿比森

正如已经回答的那样,词典的要点是未排序。Swift(和Objective-C)中有三种类型的集合

数组是项目的有序列表。当项目的顺序很重要时,请使用此选项。

字典是键和值的无序集合。当您要基于键有效地检索值时,请使用此选项。

一套是一袋无序的独特物品。如果您希望不按特定顺序收集唯一项,请使用此选项。

对于您的情况,顺序似乎对您很重要,但是您想存储某种类型的值对。也许您应该使用的是元组数组:

这样的事情,也许

let dataPoints = [("A", 1), ("B", 2), ("C", 3)]

for (letter, number) in dataPoints {
    print("\(letter), \(number)")
}

哪个输出

A, 1
B, 2
C, 3

或者

如果您在创建项目之前不了解项目的顺序,但是基于键的自然排序,则可以执行以下操作:

let dict = [
    "A" : 1,
    "B" : 2,
    "C" : 3
]

for key in dict.keys.sort() {
    guard let value = dict[key] else { break }
    print("\(key), \(value)")
}

在这种情况下,您将获得具有其默认排序顺序的键数组(如果有其他要求,可以使用其他排序功能),然后根据该排序顺序输出键值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章