【问题标题】:How to get average occurrences of string in list如何获取列表中字符串的平均出现次数
【发布时间】:2011-10-26 20:40:03
【问题描述】:

我正在尝试获取列表中字符串的平均出现次数。 基本上,我试图在大约 4 个选项的列表中获取最常见的字符串。 所以例如在这个例子中

List<string> lMyList = new List<string>();
lMyList.Add("One");
lMyList.Add("One");
lMyList.Add("Two");
lMyList.Add("Two");
lMyList.Add("Two");
lMyList.Add("Three");
lMyList.Add("Three");

我想把“二”还给我……

有什么想法吗?

【问题讨论】:

  • @SLaks - 也许 1+1+2+2+2+3+3 = 14。14/7 = 2 = 2。
  • @SLaks - 不,问题陈述是模式。

标签: c# list average


【解决方案1】:

您可以使用 LINQ:

list.GroupBy(s => s).OrderByDescending(g => g.Count()).First()

【讨论】:

  • 我确实需要对 LINQ 进行一些阅读,我的印象是它会让很多数据管理变得容易得多。
【解决方案2】:
string most = lMyList.GroupBy(x => x)
        .Select(g => new {Value = g.Key, Count = g.Count()})
        .OrderByDescending(x=>x.Count).First();

【讨论】:

    【解决方案3】:

    求平均值:

    list.GroupBy(x => x).Average(x=>x.Count())
    

    寻找最大做:

    var max = groups.OrderbyDescending(x=>x.Count()).FirstOrDefault();
    

    【讨论】:

    • 感谢您的回复,我试过了,它给了我一个数字返回,基本上我想做的是查看找到答案的频率并选择最常见的答案。感谢您的代码,尽管我认为这可能会解决我预见到的另一个问题!
    • @Jesse Knott 我的第一个答案是平均,第二个是情绪。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-29
    • 2011-04-03
    • 1970-01-01
    • 2013-01-06
    • 1970-01-01
    • 1970-01-01
    • 2019-07-05
    相关资源
    最近更新 更多