如何检查字典中是否包含列表中的项



如何检查字典中是否包含列表中的项?我有以下的字典和列表:

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.25f。

我从来没有接触过c#,但你想要这样的东西。我不认为你可以改变一个静态字典,如果它不是静态的,这里有一个方法:

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

可以使用Enumerable。相交方法:

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"];
}

try this

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

最新更新