我有一個字符串,其中每個項目是描述一個技能自由文本的列表,所以看起來有點像這樣:
搜索字符串中包含數組字典鍵
List<string> list = new List<string> {"very good right now", "pretty good",
"convinced me that is good", "pretty medium", "just medium" .....}
而且我想保持一個用戶這些自由文本的分數。所以現在,我使用條件:
foreach (var item in list)
{
if (item.Contains("good"))
{
score += 2.5;
Console.WriteLine("good skill, score+= 2.5, is now {0}", score);
}
else if (item.Contains(low"))
{
score += 1.0;
Console.WriteLine("low skill, score+= 1.0, is now {0}", score);
}
}
假設在furure我想用字典比分映射,如:
Dictionary<string, double> dic = new Dictionary<string, double>
{ { "good", 2.5 }, { "low", 1.0 }};
會是什麼之間跨越的好方法字典值和字符串列表?我現在看到的方式是做一個嵌套循環:
foreach (var item in list)
{
foreach (var key in dic.Keys)
if (item.Contains(key))
score += dic[key];
}
但我敢肯定有更好的方法。最好至少快一點,或者更好看一些(LINQ)。
謝謝。
我懷疑你能做到這一點得更快,因爲大多數其他方式(LINQ與否)可能會做嵌套在幕後循環。另外,除非你擁有數千種技能,否則性能差異可能會忽略不計。恕我直言,你提出的解決方案是不是不愉快的眼睛:) – HaukurHaf
「好運讓這個小丑做任何有用的事情」 - >「好」和「有用」。也就是說,你的設計對我來說看起來很合理,我希望在下一次的表現評估中獲得好處。 –
請注意,使用字典的方法與您的原始方法不同,因爲您在詞典 –