如何在swift中的不同字典中对同一个键的多个值求和?

时间:2016-07-17 16:15:44

标签: swift dictionary sum

我是Swift和iOS dev的新手。一般来说。我想知道如何在不同的词典中从同一个键中加总多个值。例如我有

具有相同键值对的20个词典[String:AnyObject],例如“高度”:20我想总结这些并计算平均值。  EG:

// Example dictionary 
let player17: [String: AnyObject] = [
    "Name": "Les Clay",
    "Height": 42,
    "Soccer Experience": true,
    "Guardian Name(s)": "Wynonna Brown"
]

//在这里使用任何对象,因为它们都进入了一个大数组

2 个答案:

答案 0 :(得分:1)

您可以使用 constructor( public navController: NavController, private formBuilder: FormBuilder, private goalService: GoalService, private authService: AuthService, private navService: NavService, public platform: Platform ) { super() this.contractForm = formBuilder.group({ termsAccepted: [false, Validators.required], }) } showToast(message, position) { this.platform.ready().then(() => { window['plugins'].toast.show(message, "short", position); }); } 添加数字,如下所示:

reduce

注意: let totalHeight = allPlayers.reduce(0) { (p, c) -> Int in return p + (c["Height"] as! Int) } 方法需要知道每个字典中都存在c["Height"] as! Int密钥,其值为"Height"。否则,这将在运行时产生异常。

如果您的某些字典中没有正确的密钥,或者包含其他类型的值,则需要预先过滤或使用可选的强制转换,例如

Int

答案 1 :(得分:1)

鉴于

let players: [[String:AnyObject]] = ...

这是另一种方法

let sum = players.flatMap { $0["Height"] as? Int }.reduce(0, combine: +)
  

如果词典没有Int键的有效"Height"值,则忽略该词典。