通过字典的迭代和做一些东西
是否有可能像这样迭代字典?通过字典的迭代和做一些东西
- 我想指望所有字典项(合计每一个值),
- 接下来,针对每一个琴键我想利用自己的价值
- 然后,我想每一个与和每个键值划分
- 而lasty我想每一个输出从3
乘我做了它,所以它有1项工作,但不知道怎么做,所以我t适用于字典中的每个项目。
下面是示例代码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各自的在字典中的每个键)。
我thiking有关使一个大循环此类似:
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。所以我想从循环(从字典)中乘以一个重要的数字,而不是固定的数量,这就是造成这个问题的原因。
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));
嘿,看看我的编辑:)因为你通过固定值不是在前循环的值乘以你的榜样,对不起,如果我问我的问题是错的。 – 2014-11-02 11:36:48
检查我更新的回答@ Ken'ichiMatsuyama – dotctor 2014-11-02 11:54:14
谢谢,看着这个,它应该工作,但结果的值是0,0(在调试中检查),总和是好的,它是8.不知道如何获得进入当前/项目寿。 – 2014-11-02 12:56:02
你的整个第二循环等同于'dic.TryGetValue(“史密斯”,出于X);' – dasblinkenlight 2014-11-02 11:14:09