通过字典的迭代和做一些东西

问题描述:

是否有可能像这样迭代字典?通过字典的迭代和做一些东西

  1. 我想指望所有字典项(合计每一个值),
  2. 接下来,针对每一个琴键我想利用自己的价值
  3. 然后,我想每一个与和每个键值划分
  4. 而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。所以我想从循环(从字典)中乘以一个重要的数字,而不是固定的数量,这就是造成这个问题的原因。

+1

你的整个第二循环等同于'dic.TryGetValue(“史密斯”,出于X);' – dasblinkenlight 2014-11-02 11:14:09

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)); 
+0

嘿,看看我的编辑:)因为你通过固定值不是在前循环的值乘以你的榜样,对不起,如果我问我的问题是错的。 – 2014-11-02 11:36:48

+0

检查我更新的回答@ Ken'ichiMatsuyama – dotctor 2014-11-02 11:54:14

+0

谢谢,看着这个,它应该工作,但结果的值是0,0(在调试中检查),总和是好的,它是8.不知道如何获得进入当前/项目寿。 – 2014-11-02 12:56:02