按键对字典进行排序并将其转换为数组

时间:2018-02-11 20:04:34

标签: arrays json swift sorting dictionary

我有一本价格和数量的字典。我在一秒钟内多次获得价格和价值的更新,因此我不想将它们存储在数组中,因为字典要快得多。

let mainPriceValDict = [Double:Double]()

数据以JSON数组形式出现,因此我使用可编码来解析JSON并将其放入字典中。当我使用数据时,它需要按升序和/或降序排序,因为我循环遍历每个价格以获得一定的总数量。我正在循环的数组格式如下:

let loopingArray = [PriceQuantityEntry]()

struct PriceQuantityEntry {
    let price : Double
    let size : Double
}

我想对上面字典中的键进行排序,并将它们转换为PriceQuantityEntry数组。做这个的最好方式是什么?按升序和决定顺序。我已经尝试首先对所有键进行排序,然后抓取相关值并按顺序将它们放入数组中,但这似乎比此任务实际需要的处理更多。

我认为最好的方法是在结构中放置一个自定义初始值设定项,将字典值转换为类型PriceQuantityEntry的值,但我不确定如何对排序起作用。

这是我目前正在做的工作。我觉得有一种更有效的方法可以完成。如果您觉得我应该将结构保持为数组而不是将其转换为字典,请告诉我。

loopingArray = self.mainPriceValDict.sorted { $0.0 < $1.0 }.map { PriceQuantityEntry(price: $0.0, size: $0.1) }

1 个答案:

答案 0 :(得分:0)

如果您对单个条目进行了大量更新,则每次更改条目时,字典和数组都可能导致整个内存结构的内存副本。

我建议使用对象(类)而不是结构。这将允许您使用数组和字典来引用对象实例。字典将提供对更新的直接访问,并且该数组将允许以向前或向后顺序进行顺序处理。

[编辑]示例:

config