簡體   English   中英

鍵值對 C#

[英]KeyValue Pair C#

我想弄清楚如何在 C# 中使用 KeyValuePairs 列表。 我會使用字典,但它們不允許重復值。

還有查找,我也無法弄清楚如何編寫語法。

我看過其他解決方案,但我真的很困惑如何使用

當然,我能找到的唯一例子是 for 循環,我想讓它更干凈一點。

List<KeyValuePair<char, int>> data = new List<KeyValuePair<char, int>>();

例如,我想在添加元素之前進行一些檢查。 例如:我有一個字符數組,我想在將它添加到我的列表之前檢查它。 誰能告訴我怎么查。

char[] inputArray = input.ToCharArray();
for(int i = 0; i < inputArray.Length ; i++)
{
    if(!data.Values.Contains(inputArray[i]))
    {
        data.Add(new KeyValuePair<char,int>(inputArray[i], 1));
    }
}

上面的代碼不起作用。 有人可以幫助一下語法。

我沒有在網上找到任何具體的例子。 任何幫助表示贊賞。

我不得不說,你的問題比較混亂。 如果鍵不存在,我認為您正在嘗試將值添加到KeyValuePair列表中? 這似乎與您所說的不使用Dictionary不符,但無論如何您都可以這樣做:

List<KeyValuePair<char, int>> data = new List<KeyValuePair<char, int>>();

char[] inputArray = "my string".ToCharArray();
foreach (var t in inputArray)
{
    if (!data.Any(x => x.Key == t))
    {
        data.Add(new KeyValuePair<char, int>(t, 1));
    }
}

如果您只想從 inputArray 獲取唯一值,您也可以這樣做:

var myVals = inputArray.Distinct();

最后,如果要獲取字符串中每個不同字符的計數,可以使用:

var counts = inputArray.GroupBy(x => x)
    .Select(group => new
    {
        Character = group.Key,
        Count = group.Count()
    });

根據您的評論,聽起來您真的想要一本字典。

考慮一下您的邏輯,您在添加到列表之前已經檢查了重復項,對嗎? 這意味着您的列表永遠不會有重復項。 字典防止您擁有重復的鍵,而不是重復的值。 所以你的邏輯很容易變成:

var dictionary = new Dictionary<char, int>();
foreach(char c in input)
{
    //faster than Any()
    if(!dictionary.ContainsKey(c))
    {
        dictionary.Add(c, 1);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM