重複の可能性:
キーが存在しない場合にデフォルト値を返す辞書
数字のみを含む文字列があります。数字の頻度表を生成することに興味があります。文字列の例を次に示します。
var candidate = "424256";
KeyNotFound
このコードは機能しますが、文字列にない数字を検索すると例外がスローされます。
var frequencyTable = candidate
.GroupBy(x => x)
.ToDictionary(g => g.Key, g => g.Count());
どちらが得られますか:
Key Count
4 2
2 2
5 1
6 1
だから、私はこのコードを使用しました。
var frequencyTable = (candidate + "1234567890")
.GroupBy(x => x)
.ToDictionary(g => g.Key, g => g.Count() - 1);
ただし、他の使用例では、考えられるすべてのキー値を指定する必要はありません。
frequencyTable
このように、この動作でカスタム コレクションを作成することなく、0 カウントのレコードを辞書に挿入するエレガントな方法はありますか?
public class FrequencyTable<K> : Dictionary<K, int>
{
public FrequencyTable(IDictionary<K, int> dictionary)
: base(dictionary)
{ }
public new int this[K index]
{
get
{
if (ContainsKey(index))
return base[index];
return 0;
}
}
}