gpt4 book ai didi

swift - 在分组字典中对子数组进行排序

转载 作者:搜寻专家 更新时间:2023-11-01 06:26:57 25 4
gpt4 key购买 nike

我有 3 个数组,我必须在同一年合并它们。我已经这样做了,然后我使用 Dictionary.init(grouping: weatherDataArray) 进行了分组,现在我正在尝试对分组字典进行排序。这是我拥有的数据示例:

[2008: [["year": 2008, "month": 12, "rainfallValue": 87.9000015, "tminValue": 0.200000003, "tmaxValue": 6.0999999], ["year": 2008, "month": 11, "rainfallValue": 106.400002, "tminValue": 0.200000003, "tmaxValue": 6.0999999], ["year": 2008, "month": 10, "rainfallValue": 155.699997, "tminValue": 0.200000003, "tmaxValue": 6.0999999], ["year": 2008, "month": 9, "rainfallValue": 106.300003, "tminValue": 0.200000003, "tmaxValue": 6.0999999], ["year": 2008, "month": 8, "rainfallValue": 133.600006, "tminValue": 0.200000003, "tmaxValue": 6.0999999], ["year": 2008, "month": 7, "rainfallValue": 108.099998, "tminValue": 0.200000003, "tmaxValue": 6.0999999], ["year": 2008, "month": 6, "rainfallValue": 78.5, "tminValue": 0.200000003, "tmaxValue": 6.0999999], ["year": 2008, "month": 5, "rainfallValue": 47.9000015, "tminValue": 0.200000003, "tmaxValue": 6.0999999], ["year": 2008, "month": 4, "rainfallValue": 76.1999969, "tminValue": 0.200000003, "tmaxValue": 6.0999999], ["year": 2008, "month": 3, "rainfallValue": 122.5, "tminValue": 0.200000003, "tmaxValue": 6.0999999], ["year": 2008, "month": 2, "rainfallValue": 82.3000031, "tminValue": 0.200000003, "tmaxValue": 6.0999999], ["year": 2008, "month": 1, "rainfallValue": 189.600006, "tminValue": 0.200000003, "tmaxValue": 6.0999999]], 1992: [["year": 1992, "month": 6, "rainfallValue": 38.5999985, "tminValue": 3.20000005, "tmaxValue": 5.80000019], ["year": 1992, "month": 5, "rainfallValue": 57.2999992, "tminValue": 3.20000005, "tmaxValue": 5.80000019], ["year": 1992, "month": 4, "rainfallValue": 88.0, "tminValue": 3.20000005, "tmaxValue": 5.80000019], ["year": 1992, "month": 3, "rainfallValue": 125.0, "tminValue": 3.20000005, "tmaxValue": 5.80000019], ["year": 1992, "month": 2, "rainfallValue": 87.5, "tminValue": 3.20000005, "tmaxValue": 5.80000019], ["year": 1992, "month": 1, "rainfallValue": 77.4000015, "tminValue": 3.20000005, "tmaxValue": 5.80000019], ["year": 1992, "month": 12, "rainfallValue": 105.0, "tminValue": 3.20000005, "tmaxValue": 5.80000019], ["year": 1992, "month": 11, "rainfallValue": 158.5, "tminValue": 3.20000005, "tmaxValue": 5.80000019], ["year": 1992, "month": 10, "rainfallValue": 94.5, "tminValue": 3.20000005, "tmaxValue": 5.80000019], ["year": 1992, "month": 9, "rainfallValue": 115.5, "tminValue": 3.20000005, "tmaxValue": 5.80000019], ["year": 1992, "month": 8, "rainfallValue": 157.300003, "tminValue": 3.20000005, "tmaxValue": 5.80000019], ["year": 1992, "month": 7, "rainfallValue": 84.1999969, "tminValue": 3.20000005, "tmaxValue": 5.80000019]]]

基本上是 [Int: [[String: Any]]] 类型。

所以我得到的组是年,我的目标是制作一个按年和月按升序顺序排序的数组,基本上[[String: Any]] 这将首先显示 1992 年的数据,月份将从 1-12 开始,然后是 2008 年以及与今年相关的月份从 1-12 开始。

下一步应该做什么?或者是否有不同的方法来做到这一点?

最佳答案

您可以先根据键对分组字典进行排序,这样您就可以得到一个按年份排序的元组数组,然后对其调用 map 并返回值,即字典数组,并根据月份在 map 调用中对它们进行排序。

我将你问题中的值存储在 groupedDict 中。

let sortedArrFromDict = groupedDict.sorted(by: {$0.key < $1.key}).flatMap({$0.value.sorted(by: {$0["month"]! < $1["month"]!})})
print(sortedArrFromDict)

关于swift - 在分组字典中对子数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53099709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com