gpt4 book ai didi

c# - 检查字典中是否有给定的字符串

转载 作者:行者123 更新时间:2023-11-30 13:43:28 26 4
gpt4 key购买 nike

我想检查字典value's中是否有特定的字符串,我已经尝试过这种方式,但它不是'工作。

var dict = new Dictionary<string, List<string>>();


dict["John"] = new List<string>() { "pop", "folk" };
dict["Mark"] = new List<string>() { "pop-folk", "jazz" };

if (dict.ContainsValue(new List<string>() { "pop" }))
{
Console.WriteLine("yes");
}
else
{
Console.WriteLine("no");
}

我想检查是否有字符串 "pop" 并且我期望 "yes" 但代码不工作。另一个例子是检查是否有“dance”,预期输出将是“no”。我希望你明白我的意思。如果您能向我解释最好的方法,我将不胜感激。

最佳答案

dict.ContainsValue不工作有两个原因:

  • List<T>不会覆盖 Equals , 所以你正在检查一个新对象的引用相等性
  • ContainsValue寻找一个相等 值 - 您想要寻找一个包含特定键的值。这将是一个奇怪的相等比较器,它声称具有两个不同值的列表等于其中一个值。

幸运的是,解决方案很简单。您可以使用 dictionary.Values获取一系列值,然后使用 Any检查任何值是否包含您要查找的值:

private static bool ContainsValue(Dictionary<string, List<string>> dictionary, string value)
=> dictionary.Values.Any(list => list.Contains(value));

如其他地方所述,如果您经常发现自己像这样使用字典,这可能表明您应该使用不同的数据结构。它肯定会起作用,但不会利用字典设计的廉价“按键查找”。

关于c# - 检查字典中是否有给定的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55442323/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com