ios - Swift 减少/展平字典<String,Dictionary> 到字典

标签 ios swift

Convert this

[ 
   "Cat" : ["A" : 1, "B": 2], 
   "Mat" : ["C" : 3, "D": 4]
]

Into

[
    "A" : 1, 
    "B" : 2,
    "C" : 3,
    "D" : 4
]

不使用循环。换句话说,使用像reduce、flatmap这样的函数。

source可以是类型 Dictionary<String,Dictionary<String,String>>


到目前为止,我已经成功地将字典简化为字典数组

let flatten = source.flatMap({ (k,v) -> [String: String]? in
                            return v
                        })

// flatten = [["A" : 1, "B": 2], ["C" : 3, "D": 4]]]

最佳答案

一个选项:

let dictionary = [
    "Cat" : ["A" : 1, "B": 2],
    "Mat" : ["C" : 3, "D": 4]
]

let merged = dictionary
   // take values, we don't care about keys
   .values
   // merge all dictionaries
   .reduce(into: [:]) { (result, next) in
      result.merge(next) { (_, rhs) in rhs }
   }
print(merged) // ["B": 2, "A": 1, "C": 3, "D": 4]

关于ios - Swift 减少/展平字典<String,Dictionary> 到字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49704613/

相关文章:

ios - 如何更改 MapView 中 MKUserLocation 注释的显示优先级?

swift - 从 Swift 数组中检索固定数量的数据

ios - UICollectionView 和 UIView 变成 UIScrollView

iphone - 如何在 iPhone 中使用 DES 加密 NSString 值?

ios - 字符串文字作为 println 中 func 的参数?

iphone - 如何在iPhone(iOS)中设置pickerview的高度?

ios - 如何在 Firebase 中删除 TableView 项后删除它们

ios - 嵌入 pods 框架 - Command/bin/sh 失败,退出代码为 1

ios - 快速在表格 View 中插入单元格

swift - 某些 iOS 用户在过滤 Algolia 结果时遇到崩溃