颤振 - 如何计算列表中数据的平均值?

Posted

技术标签:

【中文标题】颤振 - 如何计算列表中数据的平均值?【英文标题】:flutter - how do calculate average the data in list? 【发布时间】:2019-06-23 18:36:57 【问题描述】:

我有一个关于用户食物的List<Comment>。 它看起来像这样:

[
    userId: 1,
     rating: 4.5
    ,
    userId: 2,
     rating: 4.0
    ,
    userId: 3,
     rating: 3.5
    ,
    userId: 4,
     rating: 3.0
    

   ...
];

我想获得平均评分。 AVERAGE = Number of ratings : total user,如何在 dart 中应用这个?

【问题讨论】:

【参考方案1】:
  var values = [
    'userId': 1, 'rating': 4.5,
    'userId': 2, 'rating': 4.0,
    'userId': 3, 'rating': 3.5,
    'userId': 4, 'rating': 3.0
  ];

  var result = values.map((m) => m['rating']).reduce((a, b) => a + b) / values.length;
  print(result);

【讨论】:

在 json 相关的问题上没有人能打败你。 嗨@Günter Zöchbauer,如果我想从最高评分到最低评分对列表进行排序怎么办? 仅在手机上。应该有一个关于如何按值对地图进行排序的问题 这个答案已经过时了。在这里查看更好的解决方案***.com/a/69660580/8539278【参考方案2】:

2021 年 dart 具有来自collection 包的内置average 方法,可用于Iterable

import 'package:collection/collection.dart';

void main() 
 var values = [
    'userId': 1, 'rating': 4.5,
    'userId': 2, 'rating': 4.0,
    'userId': 3, 'rating': 3.5,
    'userId': 4, 'rating': 3.0
  ];

  var result = values.map((m) => m['rating']!).average; 

  print(result); // prints 3.75


您可能还对同一包中的 .sum 方法感兴趣。

【讨论】:

【参考方案3】:

我通过使用 fold 函数将值相加然后除以总数来做到这一点。这是一个例子:

var values = [
    'userId': 1, 'rating': 4.5,
    'userId': 2, 'rating': 4.0,
    'userId': 3, 'rating': 3.5,
    'userId': 4, 'rating': 3.0
];

List<double> ratings = values.map((e) => e.price!).toList();
double sum = ratings.fold(0, (p, c) => p + c);
if (sum > 0) 
   double average = sum / ratings.length;

【讨论】:

以上是关于颤振 - 如何计算列表中数据的平均值?的主要内容,如果未能解决你的问题,请参考以下文章

如何计算python字典中列表元素的平均值?

markdown 如何计算给定列表中的数字平均值

如何在python中计算列表的方差?

散列表的平均查找长度怎么计算?

散列表的平均查找长度怎么计算?

如何在python中计算平均值?