gpt4 book ai didi

c# - 在 C# 中的多值字典中搜索键

转载 作者:太空宇宙 更新时间:2023-11-03 19:44:43 24 4
gpt4 key购买 nike

我想像这样设置一个查找表:

 Key           Value
----- ------------------
Cat Lion, Tiger, Cheetah
Fish Dolphin, Whale
Dog . Pitbull, Doberman

输入“Lion”将返回键“Cat”

我设置了 3 种可能的方式来初始化数据:

字典:

var map = new Dictionary<string,string>
{
["Dolphin"] = "Fish",
["Lion"] = "Cat",
//....
};

一个哈希集:

var data = new Dictionary<string, HashSet<string>>
{
{"cat", new HashSet<string> {"Lion", "Tiger", "Cheetah"}},
{"fish", new HashSet<string> {"Dolphin", "Whale"}},
{"Dog", new HashSet<string> {"Pitbull", "Doberman"}}
};

一个元组:

var data = new List<Tuple<string, List<string>>>
{
Tuple.Create<string,List<string>> ("Cat", new List<string> { "Cheetah", "Lion" }),
Tuple.Create<string,List<string>> ("Dog", new List<string> { "Doberman", "Pitbull" }),
Tuple.Create<string,List<string>> ("Fish", new List<string> { "Dolphin", "Whale" }),

};

给定一个动物,我想返回它的类型。我知道对于字典我可以调用 ContainsKey 方法。

其他两个选项是否有类似的东西?

数据集不是那么大(大约 15 个键有 10 个左右的值),所以我也想知道一个选项在性能方面是否会比另一个更好。

最佳答案

我建议采用一种不同的方法。

public abstract class Animal
{
public string Type { get; }
public string Name { get; }

protected Animal(string type, string name)
{
Type = type;
Name = name;
}
}

public class Cat : Animal
{
public Cat(string name) : base("Cat", name)
{
}
}

public class Fish : Animal
{
public Fish(string name) : base("Fish", name)
{
}
}

public static class Program
{
public static void Main(string[] args)
{
List<Animal> list = new List<Animal>();
list.Add(new Cat("Cheetah"));
list.Add(new Fish("Dolphin"));

var cheetahType = list.FirstOrDefault(animal => animal.Name == "Cheetah")?.Type;
var doplhinType = list.FirstOrDefault(animal => animal.Name == "Dolphin")?.Type;
}
}

如果您实际上不需要那么多,您可以使 Animal 成为非抽象的并定义 enum 而不是 string Type 并删除派生的 child .

关于c# - 在 C# 中的多值字典中搜索键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47663446/

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