Kotlin 求具有相同第一个元素的对的平均值。科特林
我在Kotlin 求具有相同第一个元素的对的平均值。科特林,kotlin,Kotlin,我在myPairs:list中有一个配对列表,需要计算具有相同第一个元素的每组配对的平均值 我想出了这个密码。它分别查找每个组的总和和计数,然后在循环中除以计数以查找平均值 val myAverages = myPairs.groupingBy { it.first }.fold(0.0) { sum, element -> sum + element.second }.toMutableMap() val myCounts = myPairs.groupingBy { it.first
myPairs:list
中有一个配对列表,需要计算具有相同第一个元素的每组配对的平均值
我想出了这个密码。它分别查找每个组的总和和计数,然后在循环中除以计数以查找平均值
val myAverages = myPairs.groupingBy { it.first }.fold(0.0) { sum, element -> sum + element.second }.toMutableMap()
val myCounts = myPairs.groupingBy { it.first }.eachCount()
for ((myStr, count) in myCounts) {
myAverages[myStr] = myAverages[myStr]!!.div(count)
}
return myAverages
我想知道是否有更优雅的/Kotlin风格的方法通过使用聚合或折叠函数来解决这个问题?我的解决方案可行,但在我看来真的很难看 您可以使用
groupBy
功能对数据集进行分组。一旦分组了映射
,就可以使用average
函数
将其值(列表
)映射到所需的平均值
var mapOfAverages = myPairs.groupBy { it.first }
.mapValues { it.value.map { pair -> pair.second }.average() }
这将为您提供一个
映射
,其中键
是您的对的第一个元素
,值是该特定键的所有第二个元素的平均值。您的行看起来非常漂亮,并且工作正常。想到这一点感觉有点不直观,但我只和kotlin一起工作了大约一周:)