在字典数组中删除重复的月份和年份,然后根据年份和月份将其保存到另一个数组中-Swift iOS

问题描述

我有一个字典数组 var year_month = [String:Any] ,并且我要在年月份后附加每日销售数据。这是追加数据后的数组

[["year": "2019","month": "July"],["year": "2019",["month": "July","year": "2019"],"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","December"]]) 

如何删除重复的年份和月份,以及如何附加所有年份的月份 预先感谢。

解决方法

给出这样的数据集:

dataset = tf.data.TFRecordDataset(["train-0.tfrecord","train-0.tfrecord",...])
dataset = dataset.map(_parse_image_function)
dataset = dataset.padded_batch(3,padded_shapes=((None,),(None,112,1)))

按年份对数据集进行分组:

let dataSet = [["year": "2020","month": "January"],["year": "2020","month": "February"],["year": "2019","month": "March"],"month": "April"]]

这给我们:

let yearAndMonthGroupedByYear = Dictionary(grouping: dataSet) { yearAndMonth -> String? in
    return yearAndMonth["year"]
}

对于每个组,我们想要

  1. 提取年份以及与该年份相对应的月份
  2. 摆脱重复的月份
  3. 返回由一年和一系列独特的月份组成的字典

像这样:

[Optional("2020"): [["year": "2020","month": "February"]],Optional("2019"): [["year": "2019",["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]
}