簡體   English   中英

如何檢查字典是否包含列表中的項目

[英]How to check if a dictionary contains an item in a list

如何檢查字典是否包含列表中的項目。 我有以下字典和以下列表:

public static List<string> DixieStatesList = new List<string>
        {
            "Alabama", "Arkansas", "Floryda", "Georgia", "KarolinaPołudniowa", "KarolinaPółnocna",
            "Kentucky", "Luizjana", "Mississippi", "Missouri", "Oklahoma", "Teksas", "Tennesee", "Wirginia",
            "WirginiaZachodnia"
        };
public static Dictionary<string, float> WallaceNPPFRpopularities = new Dictionary<string, float>()
        {
            {"Alabama", 6}, {"Alaska", 2}, {"Arizona", 1}, {"Arkansas", 4}, {"Connecticut", 2},
            {"DakotaPołudniowa", 5}, {"DakotaPółnocna", 5}, {"Delaware", 4}, {"Floryda", 4},
            {"Georgia",  6}, {"Idaho", 1.5f}, {"Illinois", 2}, {"Indiana", 5}, {"Iowa", 2},
            {"Kalifornia", 4}, {"Kansas", 5}, {"KarolinaPołudniowa", 6}, {"KarolinaPółnocna", 5},
            {"Kentucky", 3}, {"Kolorado", 3}, {"Luizjana", 4}, {"Maine", 6}, {"Maryland", 5},
            {"Massachusets", 2 }, {"Michigan", 5}, {"Minnesota", 1.5f}, {"Mississippi", 6},
            {"Missouri", 2}, {"Montana", 1.5f}, {"Nebraska", 2}, {"Nevada", 4}, {"NewHampshire", 2},
            {"NewJersey", 4}, {"NowyJork", 1.5f}, {"NowyMeksyk", 2}, {"Ohio", 4}, {"Oklahoma", 4},
            {"Oregon", 1}, {"Pensylwania", 1.5f}, {"RhodeIsland", 3}, {"Teksas", 4}, {"Tennesee", 4},
            {"Utah", 1.5f}, {"Vermont", 5}, {"Waszyngton", 1}, {"Wirginia", 6}, {"WirginiaZachodnia", 6},
            {"Wisconsin", 1.5f}, {"Wyoming", 2}
        };

我想使用'foreach'或'if'或兩者來檢查這個字典是否包含列表中的一個元素並最終改變字典中元素的值,它與列表中的元素具有相同的鍵0.25 F。

我在 c# 之前從未接觸過,但你想要那樣的東西。 而且我不認為您可以更改靜態字典,但是,如果它不是靜態的,這是一種方法:

foreach(string key in DixieStatesList){

if(WallaceNPPFRpopularities.ContainsKey(key)
    WallaceNPPFRpopularities[key] =+ 0.25;

}

您可以使用Enumerable.Intersect 方法

const float Increment = .25f;
foreach (string state in WallaceNPPFRpopularities.Keys.Intersect(DixieStatesList))
{
    WallaceNPPFRpopularities[state] += Increment;

    // Incremented "Alabama" popularity to 6.25.
    // Incremented "Arkansas" popularity to 4.25.
    // Incremented "Floryda" popularity to 4.25.
    // Incremented "Georgia" popularity to 6.25.
    // Incremented "KarolinaPołudniowa" popularity to 6.25.
    // Incremented "KarolinaPółnocna" popularity to 5.25.
    // Incremented "Kentucky" popularity to 3.25.
    // Incremented "Luizjana" popularity to 4.25.
    // Incremented "Mississippi" popularity to 6.25.
    // Incremented "Missouri" popularity to 2.25.
    // Incremented "Oklahoma" popularity to 4.25.
    // Incremented "Teksas" popularity to 4.25.
    // Incremented "Tennesee" popularity to 4.25.
    // Incremented "Wirginia" popularity to 6.25.
    // Incremented "WirginiaZachodnia" popularity to 6.25.
    Console.WriteLine(@$"Incremented ""{state}"" popularity to {WallaceNPPFRpopularities[state]}.");
}

您可以簡單地使用 Dictionary 上的 ContainsKey 來測試鍵是否存在,如果存在則使用索引獲取結果。

        float result = -1;

        if(WallaceNPPFRpopularities.ContainsKey("Alaska"))
        {
            result = WallaceNPPFRpopularities["Alaska"];
        }

嘗試這個

    foreach (var key in DixieStatesList)
    {
        if (WallaceNPPFRpopularities.ContainsKey(key))
            WallaceNPPFRpopularities[key] += 0.25f;
    }

暫無
暫無

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

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