arrays - 字典中值的总和 - Swift

标签 arrays swift dictionary swift3

所以这只是下面一些类似的示例代码。我想把所有人的高度加在一起,这样我就可以得到一个平均值。我似乎无法弄清楚如何使用一系列字典来做到这一点。我也在使用 Xcode 3。

let people = [
    [
    "name": "John Doe",
    "sex": "Male",
    "height": "183.0"
    ],
    [
    "name": "Jane Doe",
    "sex": "Female",
    "height": "162.0"
    ],
    [
    "name": "Joe Doe",
    "sex": "Male",
    "height": "179.0"
    ],
    [
    "name": "Jill Doe",
    "sex": "Female",
    "height": "167.0"
    ],
]

下面的代码似乎只是创建新的空数组。

var zero = 0.0
var peopleHeights = Double(player["height"]!)
var totalHeights = zero += peopleHeights!

下面的代码将每个单独的值加倍,所以不是我要找的。

var zero = 0.0
var peopleHeights = Double(player["height"]!)
var totalHeights = peopleHeights.map {$0 + $0}

在下面的代码中,我得到了响应:Double 类型的值没有成员 reduce。

var peopleHeights = Double(player["height"]!)
var totalHeights = peopleHeights.reduce(0.0,combine: +)

如有任何帮助,我们将不胜感激。

最佳答案

您需要使用map 提取每个人的高度。然后您可以在包含高度的列表上应用 reduce:

您应该使用 flatMap(compactMap on Swift 4+)而不是 map 作为 + 的作品仅针对未包装的值。

people.flatMap({ Double($0["height"]!) }).reduce(0, +)

swift 5

people.compactMap { Double($0["height"]!) }.reduce(0, +)

关于arrays - 字典中值的总和 - Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39553054/

相关文章:

python - 如何用递增的数字填充二维数组?

arrays - 显示 IO 数组

ios - 在 Swift 中设置 Coreplot Axis 的 Axis 约束

ios - 如何按字母顺序排列我的 UITableView?

java - 从 Hazelcast map 中删除元素的正确方法是什么?

c# - 如何编写接受一系列匿名字典项的 API?

Java程序使用简单循环查找整数数组的重复值

javascript - 链接到计时器 Android 的微调器

swift - 使用 Swift 5 从 Settings.bundle 检索切换开关的值

python - 将字典与变量进行比较