arrays - 删除字典数组中重复的月份和年份,然后根据年份和月份将其保存到另一个数组中 - Swift iOS
问题描述
我有一个字典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<String, Any>像这样
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"]]
推荐阅读
- scala - 出现以下错误: java.lang.NoSuchMethodError: scala.Predef$.wrapRefArray([Ljava/lang/Object;)Lscala/collection/mutable/WrappedArray;
- c# - 可以在 C# 中使用具有 CA 证书的 .p12 文件而不将它们导入证书存储
- r - 如何使用 ggplot2 创建分组累积频率图
- c++ - 只读变量不可赋值
- c# - WPF - 通过单击适当的按钮将主题从暗变为亮 - Avalonia
- reactjs - 如何使用功能组件从子级读取和更新 React Context?
- firebase - 如何在flutter中从firebase cloud firestore查询数据
- python - 我可以编写一个 python 函数来使用 excel 自动执行数据下载过程吗?
- r - 谁能解释一下这个例子中分组是如何发生的?
- react-native - 组件呈现自身时未调用 mapStateToProps