是否可以像这样通过字典进行迭代?
- 我想计算所有字典项目(总和每个值),
- 接下来,对于每个Key我想要他们的价值
- 然后,我想将每个EACH键值除以和
- 最后我想将每个输出乘以3
醇>
我做了它所以它适用于1个项目,但不知道如何制作它所以它适用于字典中的每个项目。
以下是1项的示例代码:
var dic = new Dictionary<string, int>();
//this is sum
double y = 0;
foreach (var item in dic)
{
y += item.Value;
}
//this is selected item
double x = 0;
foreach (var item in dic)
{
if (item.Key == "Smith")
{
x = item.Value;
}
}
double z = 0;
z = x / y;
Console.WriteLine("Smith/DicSum: " + z);
现在我想将Z(每个Z的字典中的每个Z)相乘。
我为此制作一个大循环而感到惊讶:
for (int i=0; i<y; i++) where y is the sum for all items in dictionary and multiply z's on the end of the loop
但是我仍然不知道如何获取所有单独的值并将它们分开,而不是说每个值的特定键。
@edit 谢谢你的回复,但检查我的编辑。我有一个字符串列表,让我们说
“史密斯是史密斯公司非常酷的成员”
我的程序正在计算史密斯的数量,所以它会将x显示为两个。然后我想用所有单词的数量来分割史密斯(两个)的狙击数,所以它是2/8 = 0.25。然后我想用每个单词做这个并乘以它在这个例子中它将是2/8 * 1/8 * ... * 1/8。所以我想从循环(来自字典)乘以一个先前的数字,而不是固定数量,这就是造成这个问题的原因。
答案 0 :(得分:2)
var words = "Smith is very cool member of Smith Company"
.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
var dic = new Dictionary<string, double>();
foreach (string word in words)
{
if (dic.ContainsKey(word))
dic[word]++;
else
dic[word] = 1;
}
var sum = dic.Sum(x => x.Value);
var result = dic.Values.Aggregate(1.0, (current, item) => current * (item / sum));