我有一个字典数组var year_month=[String:Any],我将用年-月来附加每日销售数据。这是附加数据后的数组
[["year": "2019", "month": "July"], ["year": "2019", "month": "July"], "month": "July"], ["month": "July", "year": "2019"], ["month": "July", "year": "2019"], ["month": "July", "year": "2019"], ["year": "2019", "month": "July"], ["year": "2019", "month": "August"], ["month": "August", "year": "2019"], ["year": "2019", "month": "August"],["year": "2020", "month": "July"], ["year": "2020", "month": "July"], "month": "July"], ["month": "July", "year": "2020"], ["month": "July", "year": "2020"], ["month": "July", "year": "2020"], ["year": "2020", "month": "July"], ["year": "2020", "month": "August"], ["month": "August", "year": "2020"], ["year": "2020", "month": "August"]]
那么我需要将其存储在另一个数组中,如下所示var final_year_month=Dictionary<字符串,任意>像这个
final_year_month.append(["year" : "2019", "value" : ["January","February","March","April","May","June","July","August","September","October","November","December"],
["year" : "2020", "value" : ["January","February","March","April","May","June","July","August","September","October","November","December"]])
如何删除重复的年份和月份,并按年份添加所有月份提前谢谢。
给定这样的数据集:
let dataSet = [["year": "2020", "month": "January"], ["year": "2020", "month": "February"], ["year": "2019", "month": "March"], ["year": "2019", "month": "April"]]
按年份对数据集进行分组:
let yearAndMonthGroupedByYear = Dictionary(grouping: dataSet) { yearAndMonth -> String? in
return yearAndMonth["year"]
}
这给了我们:
[Optional("2020"): [["year": "2020", "month": "January"], ["year": "2020", "month": "February"]], Optional("2019"): [["year": "2019", "month": "March"], ["month": "April", "year": "2019"]]]
对于每组,我们希望
- 提取该年对应的年份和月份
- 消除重复月份
- 返回一个由一年和一组唯一月份组成的字典
如此:
let result = yearAndMonthGroupedByYear.compactMap { year, yearAndMonthArray -> [String: Any]? in
guard let year = year else { return nil }
let months = yearAndMonthArray.compactMap { $0["month"] }
let uniqueMonths = Set(months)
let arrayOfUniqueMonths = Array(uniqueMonths)
return ["year": year, "value": arrayOfUniqueMonths]
}
这给了我们:
[["year": "2020", "value": ["January", "February"]], ["value": ["March", "April"], "year": "2019"]]