gpt4 book ai didi

c# - 如何选择 List>> 中的键值对列表并修改它们的值? C#

转载 作者:行者123 更新时间:2023-11-30 20:06:14 26 4
gpt4 key购买 nike

现在这个问题很难了。现在这是我的主要 list

List<List<KeyValuePair<string, double>>> dblWordFreqByCluster = new List<List<KeyValuePair<string, double>>>();

所以让我们给出示例列表

(house,40),(home,20),(monitor,40)
(home,10),(work,60),(monitor,30)
(school,70),(home,10),(word,20)

所以每一行都是一个List<KeyValuePair<string, double>>并且有一个包含所有这些行的最大列表。

我想要做的是选择每个单词值,将它们相加,然后将整个列表中的单词数除以。所以修改后lists会变成下面这样

(house,40),(home,40/3),(monitor,70/2)
(home,40/3),(work,60),(monitor,70/2)
(school,70),(home,40/3),(word,20)

这意味着获取每个键的平均值并更新每个键值。

C# 4.0 WPF

最佳答案

使用 Linq 非常容易。首先,计算每个键的平均值:

var averages =
(from list in dblWordFreqByCluster
from kvp in list
group kvp by kvp.Key into g
select new
{
Key = g.Key,
Avg = g.Average(kvp => kvp.Value)
}).ToDictionary(x => x.Key, x => x.Avg);

然后更新列表。由于 KeyValuePair 是不可变的,因此您需要用新的替换项目:

foreach (var list in dblWordFreqByCluster)
{
for (int i = 0; i < list.Count; i++)
{
string key = list[i].Key;
list[i] = new KeyValuePair<string, double>(key, averages[key]);
}
}

关于c# - 如何选择 List<List<keyvaluepair<string,double>>> 中的键值对列表并修改它们的值? C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10021229/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com